隨着一些(或非常)的試驗和錯誤,我能夠修改我的副本並粘貼nginx fastcgi php配置從幾年前的某個地方能夠運行我的PHP應用程序在子文件夾中。nginx沒有通過fastcgi查詢字符串
但是我不能解決的最後一步是如何讓nginx將查詢字符串傳遞給php,以便能夠訪問GET參數。這是我的配置大多是完美的,只有配置參數丟失:
server {
listen 80;
server_name project.dev;
location /app/ {
alias /path/to/my/application/;
index index.php;
try_files $uri $uri/ /app/index.php;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
}
}
location/{
# configuration for static website
}
}
我讀了有你要傳遞給try_files
不同的選項來獲得請求參數:
try_files $uri $uri/ /app/index.php$is_args$query_string;
try_files $uri $uri/ /app/index.php$is_args$args;
try_files $uri $uri/ /app/index.php?$query_string;
不幸的是將其更改爲任何這些結果在我的PHP腳本不再被人發現,因爲nginx的請求重置爲它的文檔根:
2016/11/25 11:54:48 [error] 45809#0: *1169 open() "/usr/local/Cellar/nginx-full/1.10.2/htmlindex.php" failed (2: No such file or directory), client: 127.0.0.1, server: project.dev, request: "GET /app/myurl?test=works HTTP/2.0", host: "project.dev", referrer: "http://project.dev/app/myurl?test=works"
提供了一個絕對路徑fastcgi_param SCRIPT_FILENAME
不工作太產區同樣的錯誤。即使在server
級別上設置root
配置也無法正常工作,因爲每次都會省略路徑的分隔斜槓和index.php
。但是(如果可能的話)我寧願不在服務器級別設置根目錄,因爲這個項目由文件系統上的許多不同的文件夾和應用程序組成,共享沒有公共目錄。
你想達到什麼目的? '/ path/to/my/application /'下有哪些文件? –
我的完整應用程序保存在'/ path/to/my/application /'下,它的所有資源都是php。加載資產和運行php的工作與預期完全一致,但由於某些原因,我無法將$ _GET參數傳遞給fastcgi –
問題是'別名'和'try_files'。如果'/ path/to/my/application /'以'/ app'結尾(與URI相同的子目錄名稱),那麼您希望在URI'/ app'下運行應用程序, 。 –