首頁 > 後端開發 > php教程 > Nginx伺服器下使用ThinkPHP的pathinfo模式的問題

Nginx伺服器下使用ThinkPHP的pathinfo模式的問題

WBOY
發布: 2016-08-08 09:25:12
原創
1204 人瀏覽過

LNMP一鍵安裝包裝上過後,發現thinkphp的pathinfo模式無法使用。
百度一番,發現nginx/conf/vhost/網域 檔案裡有開啟pathinfo的說明,於是啟動了pathinfo。
但專案還是無法運行,於是我在本地和伺服器同時運行了一下程式碼:

<code><span><span><?php</span>
var_dump(<span>$_SERVER</span>);</span></code>
登入後複製

發現PHP_SELF這一項有區別,so問題可能就在這裡。
接下來在專案裡搜尋PHP_SELF,找到了這個檔案:
ThinkPHP.php

<code><span>if</span>(<span>IS_CGI</span>) {
            <span>//</span><span>CGI</span>/<span>FASTCGI</span>模式下
            <span>$_temp</span>  = explode(<span>'.php'</span>,<span>$_SERVER</span>[<span>'PHP_SELF'</span>]);
            define(<span>'_PHP_FILE_'</span>,   rtrim(str_replace(<span>$_SERVER</span>[<span>'HTTP_HOST'</span>],<span>''</span>,<span>$_temp</span>[<span>0</span>].<span>'.php'</span>),<span>'/'</span>));
        }<span>else</span> {
            define(<span>'_PHP_FILE_'</span>,    rtrim(<span>$_SERVER</span>[<span>'SCRIPT_NAME'</span>],<span>'/'</span>));
        }</code>
登入後複製

也就是ThinkPHP在cgi模式下依賴了PHP_SELF,問題果然在這裡
最後又百度了一番,原來是php.ini裡為了屏蔽一個漏洞設定了:

<code><span>cgi.fix_pathinfo</span>=<span>0</span></code>
登入後複製

正是因為這一行設置,導致了PHP_SELF的值出現了偏差。

然而LNMP整合套件裡的pathinfo.conf已經使用

<code>try_files <span>$fastcgi_script_name</span> =<span>404</span></code>
登入後複製

解決了這個漏洞,所以我們可以修改php.ini為

<code><span>cgi.fix_pathinfo</span>=<span>1</span></code>
登入後複製

重啟伺服器,OK,問題解決

以上就介紹了Nginx伺服器下使用ThinkPHP的pathinfo模式的問題,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板