ThinkPHP部署在lnmp環境中碰到的問題

先說一下問題:php

  由於tp5的入口文件在public目錄下,而Application和public同級,nginx

  我用的lnmp1.5默認作了防跨站目錄設置,因此致使入口文件沒法進入application目錄,apache

  具體說法看lnmp官網給的說法吧vim

  

##防跨目錄設置##
LNMP 1.1及以前的版本使用php.ini裏面,open_basedir設置

LNMP 1.2及更高版本防跨目錄功能使用.user.ini,該文件在網站根目錄下,能夠修改.user.ini 裏面的open_basedir的值來設置限制訪問的目錄或刪除來移除防跨目錄的設置。

.user.ini文件沒法直接修改,如要修或刪除須要先執行:chattr -i /網站目錄/.user.ini
可使用winscp文件管理、vim編輯器或nano編輯器進行修改。
刪除的話rm -f /網站目錄/.user.ini 就能夠。
修改完成後再執行:chattr +i /網站目錄/.user.ini
.user.ini不須要重啓通常5分鐘左右生效,也能夠重啓一下php-fpm當即生效。
若是要更改網站目錄必需要按上述方法修改防跨目錄的設置,不然確定報錯!!

LNMP 1.4上若是不想用防跨目錄或者修改.user.ini的防跨目錄的目錄還須要將 /usr/local/nginx/conf/fastcgi.conf 裏面的fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; 在該行行前添加 # 或刪除改行,須要重啓nginx。

LNMP 1.4上也能夠直接使用lnmp1.4/tools/ 目錄下的 ./remove_open_basedir_restriction.sh 進行移除。
在Thinkphp、codeigniter、Laravel等框架下,網站目錄通常是在public下,可是public下的程序要跨目錄調用public上級目錄下的文件,由於LNMP默認是不容許跨目錄訪問的,因此都是必需要將防跨目錄訪問的設置去掉,有時候這些框架類的程序提示500錯誤也多是這個問題引發的。


LNMPA或LAMP 模式1.2版本以上的防跨目錄的設置使用的對應apache虛擬主機配置文件(lnmp管理工具添加的話文件是 /usr/local/apache/conf/vhost/域名.conf )裏的php_admin_value open_basedir參數進行設置。若是不須要設置能夠在前面加 # 進行註釋,或自行修改目錄的限制。
重啓apache生效。

  因此,最終的解決方案就是官網給的:註釋fastcgi.conf的最後一行app

相關文章
相關標籤/搜索