TP5報錯總結


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生效。
lnmp設置路由

 

  注:如果是一件安裝的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上出現,大小寫問題

找到對應的文件更改名稱即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM