nginx+php出現(xiàn)No input file specified解決辦法
今天在自己本地的開發(fā)環(huán)境突然出現(xiàn)了No input file specified錯(cuò)誤,反復(fù)檢查返現(xiàn)自己的配置文件和配置路徑以及權(quán)限都沒有問題。經(jīng)過反復(fù)的排查終于發(fā)現(xiàn)了問題,現(xiàn)將問題及解決分享如下:
問題原因分析
在GitHub上下載了一個(gè)開源的tp5項(xiàng)目,之前自己本地的網(wǎng)站運(yùn)行都沒有問題。但是安裝了這個(gè)開源項(xiàng)目后就發(fā)現(xiàn)本地其他網(wǎng)站都無法訪問了。訪問就是No input file specified錯(cuò)誤。在網(wǎng)上也找了解決辦法,但是都不是,看來這個(gè)錯(cuò)誤有點(diǎn)兒詭異。
后來反復(fù)嘗試,重啟電腦后問題得到解決但是再次運(yùn)行下載的tp5開源項(xiàng)目后其他網(wǎng)站又出現(xiàn)了這樣的錯(cuò)誤No input file specified 而且只有這一個(gè)網(wǎng)站運(yùn)行沒有問題。
據(jù)此將錯(cuò)誤圈定在該開源項(xiàng)目的nginx配置文件中。再來看看該配置文件:
server {
listen 80;
server_name local.test.com;
access_log /data/wwwlogs/local.test.com.log combined;
error_log /data/wwwlogs/local.test.com_error.log error;
index index.html index.htm index.php;
root /data/php/test;
add_header X-Powered-Host $hostname;
fastcgi_hide_header X-Powered-By;
if (!-e $request_filename) {
rewrite ^/(.+?\.php)/?(.*)$ /$1/$2 last;
rewrite ^/(.*)$ /index.php/$1 last;
}
location ~ \.php($|/){
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
set $real_script_name $fastcgi_script_name;
if ($real_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
}
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param PHP_VALUE open_basedir=$document_root:/tmp/:/proc/;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
access_log off;
error_log off;
expires 30d;
}
location ~ .*\.(js|css)?$ {
access_log off;
error_log off;
expires 12h;
}
在以上的配置中其他都是常規(guī)的配置。因?yàn)槲沂褂胏gi。在fastcgi參數(shù)中有一行可能大家也注意到了。
fastcgi_param PHP_VALUE open_basedir=$document_root:/tmp/:/proc/;
就是這句。這句的主要作用是設(shè)置fastcgi的可操作目錄從而防止跨站的,將open_basedir限定在了本項(xiàng)目的目錄和/tmp/以及/proc/中。
問題解決
剛剛說了是在配置的fastcgi配置中多了一句防止跨站的語句。那么這句話他其實(shí)是影響了整個(gè)fastcgi的參數(shù),這樣因?yàn)槲业钠渌W(wǎng)站的路徑是/data/php/xxx/這樣的目錄,而不在本開源項(xiàng)目的目錄/data/php/test/所以fastcgi就無法找到。
所以在這句之前加#注釋這句或者刪除這句重啟系統(tǒng)或重啟nginx就可以了。
線上部署的建議
那么到底要不要使用這句呢?在線上環(huán)境中當(dāng)然是可以的。在線上項(xiàng)目部署中對于open_basedir中最好別使用$document_root這樣的變量。如果有多個(gè)項(xiàng)目在線上服務(wù)器中那么可以把所以項(xiàng)目放置在一個(gè)統(tǒng)一的目錄中。例如我的線上是wwwroot目錄下放置其他網(wǎng)站。例如/wwwroot/test1 /wwwroot/test2那么我可以配置為
fastcgi_param PHP_VALUE open_basedir=/wwwroot/:/tmp/:/proc/;
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
簡單了解Nginx七層負(fù)載均衡的幾種調(diào)度算法
這篇文章主要介紹了簡單了解Nginx七層負(fù)載均衡的幾種調(diào)度算法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Nginx-rtmp實(shí)現(xiàn)直播媒體實(shí)時(shí)流效果
這篇文章主要介紹了Nginx-rtmp實(shí)現(xiàn)直播媒體實(shí)時(shí)流效果,文中給出了總體設(shè)計(jì)圖,為了整合平臺(tái),會(huì)自建RTMP流媒體服務(wù)器和使用云廠商SaaS的RTMP流媒體服務(wù),需要的朋友可以參考下2018-08-08
分享nginx+php-fpm實(shí)現(xiàn)大文件下載排坑的過程
這篇文章主要介紹了nginx+php-fpm實(shí)現(xiàn)大文件下載排坑的過程,文中通過代碼實(shí)例相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定得參考借鑒價(jià)值,需要的朋友參考下吧2018-08-08
nginx禁止直接通過ip進(jìn)行訪問并跳轉(zhuǎn)到自定義500頁面的操作
這篇文章主要介紹了nginx禁止直接通過ip進(jìn)行訪問并跳轉(zhuǎn)到自定義500頁面的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
nginx中封禁ip和允許內(nèi)網(wǎng)ip訪問的實(shí)現(xiàn)示例
Nginx不僅僅只是一款反向代理和負(fù)載均衡服務(wù)器,本文主要介紹了nginx中封禁ip和允許內(nèi)網(wǎng)ip訪問的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03

