LNMP一鍵安裝包上部署TP5項目500錯誤或者空白解決
【問題原因】
TP5的入口文件在public下,當他調用類文件時,跨目錄所以造成500錯誤,或者一片空白的問題
【解決方法】
1.public和runtime的權限一般給755即可,如果不行那就給777,報錯信息mkdir() Permission denied
2.https://lnmp.org/faq/lnmp-vhost-add-howto.html
2.1 刪除網站目錄下的 .user.ini
.user.ini文件無法直接修改,如要修或刪除需要先執行:chattr -i /網站目錄/.user.ini
刪除的話rm -f /網站目錄/.user.ini 就可以。
2.2 注釋open_basedir的最后一行
將 /usr/local/nginx/conf/fastcgi.conf 里面的fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; 在該行行前添加 # 或刪除改行,需要重啟nginx。
2.3 確保你添加虛擬主機的時候,使用的是正確的路由規則

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生效。
3.pathinfo設置
LNMP上各個版本pathinfo各個版本的設置基本一樣:
lnmp v1.1上,修改對應虛擬主機的配置文件(/usr/local/nginx/conf/vhost/域名.conf)
去掉#include pathinfo.conf前面的#,把try_files $uri =404; 前面加上# 注釋掉。
1.2,1.3,1.4,1.5及以上版本,修改對應虛擬主機的配置文件(/usr/local/nginx/conf/vhost/域名.conf)
將include enable-php.conf;替換為include enable-php-pathinfo.conf;
1.4版本多PHP版本啟用pathinfo的話,進入/usr/local/nginx/conf目錄,拷貝一份enable-php-pathinfo.conf 命名為 enable-php7.2-pathinfo.conf,將 enable-php7.2.conf 文件里 fastcgi_pass這一行內容完整的復制下來替換 enable-php7.2-pathinfo.conf 文件中的 fastcgi_pass這一行 ,保存,再按前面的方法修改虛擬主機 include enable-php7.2-pathinfo.conf; 就行了,其他版本以此類推。
1.5版本多PHP版本開啟pathinfo的話,可以在lnmp vhost add 是選擇啟用pathinfo,如果存在多PHP版本就會提示你選擇,也可以直接修改虛擬主機配置文件將include enable-php.conf; 替換為 include enable-php7.2-pathinfo.conf; 保存
修改pathinfo需要重啟nginx生效。
注:如果是一件安裝的LAMP或者LNMP,創建虛擬主機的時候pathinfo選擇你使用的框架的就可以了
驗證碼輸入正確卻一直報驗證碼錯誤
1.代碼問題
2.存儲滿了
TP5報錯找不到模塊Index
在windows上一切正常,在linux環境報錯
1.大小寫問題
2.runtime和public權限問題
chmod -R 775 目錄名
將兩個目錄權限進行修改,775不行就試試777看下
3.public下的index文件中指向的應用路徑有問題
#define('APP_PATH', __DIR__ . '/../application/');
define('APP_PATH', __DIR__ . '/../app/');
模板文件不存在
window上沒有,linux上出現,大小寫問題
找到對應的文件更改名稱即可