今天下午我要和小夥伴一起開發一個Laravel 的項目,這個專案是我夥伴已經開發了一部分,所有我就克隆了一份到我的電腦上,但是等我配置好,打開網址的提示”No input file specified.“ 404錯誤
首先我懷疑是專案原始碼的問題,然後我直接在入口檔案最前面加入了一句如下;我存取網址還是報同樣的錯誤。
<?php exit(1);
說明不是我專案原始碼的問題,排除程式碼的問題;
我開始懷疑是自己環境的問題,於是我就開始折騰了。我把項目刪了,又從新開始建一個項目,但是還是不行。我發現只有這個專案是這樣的問題。於是我確定不是環境的問題。
說明不是環境的問題,排除環境的問題
#我百度了一下,有人說可能是Homestead.yaml 的問題,但是我仔細對照了一邊,也沒有發現的那裡出問題了。於是我就 Google 了一下,也沒有找到好的原因。
排除虛擬機器配置的問題
於是我就再想不是環境的問題,不是程式的問題~~~;最後覺得應該去虛擬機器裡面看看,最後我在ngnix 的日誌中看到這個錯誤。
2019/05/23 12:31:44 [error] 5085#5085: *1 FastCGI sent in stderr: "PHP message: PHP Warning: Unknown: open_basedir restriction in effect. File(/home/vagrant/Code/haopai-git/public/index.php) is not within the allowed path(s): (/www/wwwroot/dev.guooo.top/:/tmp/:/proc/) in Unknown on line 0 PHP message: PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0 Unable to open primary script: /home/vagrant/Code/haopai-git/public/index.php (Operation not permitted)" while reading response header from upstream, client: 192.168.10.1, server: hp.hopa.cc, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.2-fpm.sock:", host: "hp.hopa.cc"
看到上面的錯誤,我也去網上找,網上主要是說ngnix 裡面配置fastcgi_param 的問題,但是我覺得不對吧,因為別的項目都沒問題,單單就這個項目有問題。不知怎麼了,我就注意到"/www/wwwroot/" 這個東西,我電腦裡就不應該有這個資料夾啊,於是我就去專案裡查找這個字串,最後在.user.ini 這個檔案找到了,當我看到這個檔案的時候我就意識到是他的問題,我把這個檔案裡面的配置刪了。文件內容如下:
open_basedir=***********
好了,問題解決了。
之後回過頭來想想,其實一開始就應該想到去看看 ngnix 的日誌。之前也接觸過 .user.ini 這個文件,那時只記得他是防治跨站攻擊用的。
自 PHP 5.3.0 起,PHP 支援基於每個目錄的 .htaccess 風格的 INI 檔案。此類文件僅由 CGI/FastCGI SAPI 處理。此功能使得 PECL 的 htscanner 擴展作廢。如果使用 Apache,則用 .htaccess 檔案有相同效果。
除了主php.ini 之外,PHP 還會在每個目錄下掃描INI 文件,從被執行的PHP 文件所在目錄開始一直上升到web 根目錄($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被執行的 PHP 檔案在 web 根目錄之外,則只掃描該目錄。
在 .user.ini 風格的 INI 檔案中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 設定可被辨識。
更多Laravel相關技術文章,請造訪Laravel教學專欄進行學習!
以上是痛苦的排錯之” No input file specified.'的詳細內容。更多資訊請關注PHP中文網其他相關文章!