在Windows7上安裝了Nginx+PHP,參考教程爲 http://www.javashuo.com/article/p-swnsykib-d.htmlphp
啓動 nginx 後,在瀏覽器中輸入localhost能夠看到成功訪問nginx的頁面:
html
在html目錄中添加了一個phpinfo.php文件,內容爲:nginx
<?php phpinfo(); ?>
在瀏覽器中輸入:瀏覽器
localhost:/phpinfo.phpcode
頁面卻顯示:
htm
後來意識到是 nginx 安裝目錄下的 conf/nginx.conf 文件配置不正確:blog
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; }
如上配置中的 SCRIPT_FILENAME , /scripts 是不存在的路徑,應當更改成存放 .php 文件的目錄路徑:教程
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME D:/nginx-1.15.3/html/$fastcgi_script_name; include fastcgi_params; }
或者使用 $document_root 來代替,該變量即爲 location 配置塊中的 root 指定的目錄 ‘html’。ip
回頭再看那篇參考教程,裏面的配置就是把 SCRIPT_FILENAME 寫成 '$document_root/$fastcgi_script_name' (原文中 $document_root 後面少了一個 '/'),當時由於在配置文件中沒有找到 $document_root 的定義,因此就沒放在心上,覺得是各自的環境不同的緣由,如今看來,$document_root 是 nginx 的一個內置環境變量,專門用來指代當前 location 配置塊中的 root 變量。get
剛纔試驗了一下,發現
$document_root/$fastcgi_script_name (有'/')
和
$document_root$fastcgi_script_name (無'/')
均可以使 nginx 正常找到 .php 文件