LNMP1.3一鍵安裝Linux環境,配置Nginx運行ThinkPHP3.2

來源:互聯網
上載者:User

標籤:ram   file   dir   虛擬   idt   lnmp環境   linux環境   地址   htm   

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

如:

123
#error_page   404   /404.html;#include enable-php.conf;             # 註冊這一行include enable-php-pathinfo.conf;     # 加入這行

2:

繼續修改,在添加下面配置資訊:

1234567891011121314151617
location ~ .php{    set $path_info "";    set $real_script_name $fastcgi_script_name;    #如果地址與引號內的Regex匹配    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伺服器環境。

#如果請求既不是一個檔案,也不是一個目錄,則執行一下重寫規則

1234567
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:

參考:筆者設定檔樣本:

12345678910111213141516171819202122232425262728293031323334353637383940414243
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;            #如果地址與引號內的Regex匹配            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

12
//nginx環境下防止U方法輸出錯誤define(‘__APP__‘, ‘‘);

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

LNMP1.3一鍵安裝Linux環境,配置Nginx運行ThinkPHP3.2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.