91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

nginx+php出現No input file specified解決辦法

發布時間:2020-08-28 17:32:40 來源:腳本之家 閱讀:304 作者:MarsWill 欄目:服務器

今天在自己本地的開發環境突然出現了No input file specified錯誤,反復檢查返現自己的配置文件和配置路徑以及權限都沒有問題。經過反復的排查終于發現了問題,現將問題及解決分享如下:

問題原因分析

在GitHub上下載了一個開源的tp5項目,之前自己本地的網站運行都沒有問題。但是安裝了這個開源項目后就發現本地其他網站都無法訪問了。訪問就是No input file specified錯誤。在網上也找了解決辦法,但是都不是,看來這個錯誤有點兒詭異。

后來反復嘗試,重啟電腦后問題得到解決但是再次運行下載的tp5開源項目后其他網站又出現了這樣的錯誤No input file specified 而且只有這一個網站運行沒有問題。

據此將錯誤圈定在該開源項目的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;
  }

在以上的配置中其他都是常規的配置。因為我使用cgi。在fastcgi參數中有一行可能大家也注意到了。

fastcgi_param PHP_VALUE open_basedir=$document_root:/tmp/:/proc/;

就是這句。這句的主要作用是設置fastcgi的可操作目錄從而防止跨站的,將open_basedir限定在了本項目的目錄和/tmp/以及/proc/中。

問題解決

剛剛說了是在配置的fastcgi配置中多了一句防止跨站的語句。那么這句話他其實是影響了整個fastcgi的參數,這樣因為我的其他網站的路徑是/data/php/xxx/這樣的目錄,而不在本開源項目的目錄/data/php/test/所以fastcgi就無法找到。
所以在這句之前加#注釋這句或者刪除這句重啟系統或重啟nginx就可以了。

線上部署的建議

那么到底要不要使用這句呢?在線上環境中當然是可以的。在線上項目部署中對于open_basedir中最好別使用$document_root這樣的變量。如果有多個項目在線上服務器中那么可以把所以項目放置在一個統一的目錄中。例如我的線上是wwwroot目錄下放置其他網站。例如/wwwroot/test1 /wwwroot/test2那么我可以配置為

fastcgi_param PHP_VALUE open_basedir=/wwwroot/:/tmp/:/proc/;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜阳市| 玉树县| 宝清县| 平遥县| 房产| 涪陵区| 都江堰市| 齐河县| 河西区| 蒙山县| 乌拉特中旗| 武陟县| 麟游县| 财经| 青浦区| 中方县| 教育| 麦盖提县| 佛学| 安顺市| 永善县| 钦州市| 三台县| 澄江县| 泰和县| 南阳市| 万荣县| 平安县| 平武县| 旌德县| 建水县| 博爱县| 潞城市| 神农架林区| 辽源市| 陇南市| 灵璧县| 广东省| 镇原县| 盘山县| 洪湖市|