LNMP1.3一键安装Linux环境,配置Nginx运行ThinkPHP3.2

LNMP1.3一键安装Linux环境,配置Nginx运行ThinkPHP3.2

你是否遇见过:安装LNMP1.3环境后,运行ThinkPHP 3.2,只能打开首页,不能访问控制器,报404错误。

按照以下3步设置,即可解决。

ThinkPHP支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式,系统默认的PATHINFO模式。

LNMP1.3 一键安装完成后,默认支持REWRITE,需要手动开启 PATHINFO。

第1步修改:php.ini文件
位置:/usr/local/php/etc/php.ini

搜索查找到:cgi.fix_pathinfo 配置项,默认为0,修改为1,开启 pathinfo 选项。

如图1:

第2步修改:nginx的配置文件 (笔者使用的是虚拟域名配置文件:/usr/local/nginx/conf/vhost/*.conf)

找到 server 的配置选项:

默认只有 include enable-php.conf,请注释掉;
然后添加一行:include enable-php-pathinfo.conf

如:

1
2
3
#error_page   404   /404.html;
#include enable-php.conf;             # 注册这一行
include enable-php-pathinfo.conf;     # 加入这行

如图2:

继续修改,在添加下面配置信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
location ~ .php
{
    set $path_info "";
    set $real_script_name $fastcgi_script_name;
    #如果地址与引号内的正则表达式匹配
    if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
    #将文件地址赋值给变量 $real_script_name
    set $real_script_name $1;
    #将文件地址后的参数赋值给变量 $path_info
    set $path_info $2;
    }

    #配置fastcgi的一些参数
    fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
    fastcgi_param SCRIPT_NAME $real_script_name;
    fastcgi_param PATH_INFO $path_info;
}

在Nginx,可以通过在Nginx.conf中配置转发规则实现,解决其他不支持PATHINFO的WEB服务器环境。

#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则

1
2
3
4
5
6
7
if (!-e $request_filename)
{
	#地址作为将参数rewrite到index.php上。
	rewrite ^/(.*)$ /index.php/$1;
	#若是子目录则使用下面这句,将subdir改成目录名称即可。
	#rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
}

官方出处:http://document.thinkphp.cn/manual_3_2.html#url_rewrite

第3步:重启LNMP环境,配置生效。

最终效果测试:
1. 去掉了 index.php
2. 可以访问控制器下的方法。
3. U 方法正确。

如图3:

参考:笔者配置文件示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
server
    {
        listen 80;
        #listen [::]:80;
        server_name tp32.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/tp32.com;

        include other.conf;
        #error_page   404   /404.html;
        #include enable-php.conf;
        include enable-php-pathinfo.conf; #加入这行

        location ~ .php
        {
            set $path_info "";
            set $real_script_name $fastcgi_script_name;
            #如果地址与引号内的正则表达式匹配
            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
            #将文件地址赋值给变量 $real_script_name
            set $real_script_name $1;
            #将文件地址后的参数赋值给变量 $path_info
            set $path_info $2;
            }

            #配置fastcgi的一些参数
            fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
            fastcgi_param SCRIPT_NAME $real_script_name;
            fastcgi_param PATH_INFO $path_info;
        }

        #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
        if (!-e $request_filename)
        {
            #地址作为将参数rewrite到index.php上。
            rewrite ^/(.*)$ /index.php/$1;
            #若是子目录则使用下面这句,将subdir改成目录名称即可。
            #rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
        }

        access_log  /home/wwwlogs/tp32.com.log;
    }

入口文件index.php

1
2
//nginx环境下防止U方法输出错误
define(‘__APP__‘, ‘‘);

参考:
http://www.thinkphp.cn/topic/3138.html

时间: 2024-08-06 03:42:03

LNMP1.3一键安装Linux环境,配置Nginx运行ThinkPHP3.2的相关文章

阿里云Linux一键安装web环境使用教程

以前是万网虚拟主机空间越发的不够了,想换服务器由于备案在万网为了方便只好选择了阿里云空间. 配置环境阿里云Linux一键安装web环境是一个方便广大网站建设者的环境配置,省去了使用面板不安全占用系统内存的诸多问题,方便的建设PHP环境省去了,人工配置的繁琐节省时间. 如果是新手建议安装面板解决问题,毕竟这个环境还是需要手动配置的,如果你安装之后不懂可以在阿里云后台申请阿里云的工程师帮您解决问题. 如果是1G内存以上的ECS可以使用WDCP这个使用的比较多久是版本不怎么更新安全性还是可以的.小于1

关于linux下jdk的安装与环境配置(来自朋友Janie)

Created by Janie 转至元数据起始 安装前的工作 1.首先检查OPENJDK是否存在, 输入如下命令: java -version  2.如果存在 则输入: rpm -qa | grep java   出现一些java文件名 3.将所有出现的文件都卸载掉 输入命令 : rpm -e --nodeps 之前出现的java文件名 逐一卸载,直到输入以下命令后没有信息出现 rpm -qa | grep java  java -version jdk的安装与环境配置 1.准备好jdk的安装

Linux下安装Java环境配置

1.下载安装文件 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.在usr目录下建立java安装目录 cd /usr mkdir java 3.将安装文件拷贝到java目录下,并执行解压命令 tar -zxvf jdk-8u151-linux-x64.tar.gz 4.设置环境变量 vim /etc/profile 在文件末尾添加如下内容: JAVA_HOME=/

rancher说明为什么需要按照指定版本安装以及rancher和节点linux环境配置

rancher说明为什么需要按照指定版本安装以及rancher和节点linux环境配置 待办 https://blog.csdn.net/CSDN_duomaomao/article/details/75267156 有关环境配置 https://blog.csdn.net/wo18237095579/article/details/89638901#_9 rancher 官方配置要求 https://docs.rancher.cn/rancher2x/quick-start.html#_2-配

Linux 环境配置

1.工具 putty http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 压缩版 一会 用到上传工具 psftp. //JDK的安装 1.手动在Win7 下下载JDK.rpm文件. http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 2.上传rpm文件到 双击psftp工具 open xxx.xxx.xxx

centos7安装docker并配置php运行环境

原文:centos7安装docker并配置php运行环境 一.安装docker 首先我们先来了解一下什么是docker. docker是一个虚拟化的技术,基于 Linux 内核,是将进程进行封装隔离,由于隔离的进程独立于宿主机和其它的隔离的进程,因此也可以称为容器.很多人把docker理解为虚拟机,其实不是的,因为它不需要进行硬件虚拟以及运行完整操作系统等额外开销的,docker的出现也是为了解决在各种复杂的环境下不需要做任何的修改还可以保证程序正常稳定的运行,也就是环境一致性的问题,当然还有k

Android NDK 简单介绍、工具安装、环境配置

NDK全称:Native Development Kit. 1.NDK是一系列工具的集合. * NDK提供了一系列的工具,帮助开发人员高速开发C(或C++)的动态库,并能自己主动将so和java应用一起打包成apk.这些工具对开发人员的帮助是巨大的. * NDK集成了交叉编译器,并提供了对应的mk文件隔离平台.CPU.API等差异,开发者仅仅须要简单改动mk文件(指出"哪些文件须要编译"."编译特性要求"等),就能够创建出so. * NDK能够自己主动地将so和Ja

Centos6.5安装及简单配置nginx

Centos6.5安装及简单配置nginx 一.准备事项 (1) 因为nginx需要访问80端口所以请先关闭或者开放防火墙端口,和selinux. 参考命令 关闭防火墙: [[email protected] ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT [[email protected] ~]# service iptables save 关闭selinux: [[email protected] ~]# setenforce 0 [[e

linux环境配置与使用合集

配置linux和samba共享 1. 安装linux操作系统 2. 通过windows操作系统ping linux看看是否可以ping通 3. 相关软件安装 a. 安装samba sudo apt-get install samba4, sudo apt-get install system-config-samba b. 安装ssh,这样windows可以远程登录linux, sudo apt-get install ssh c. 安装git,sudo apt-get install git-