fastcgi — FPM / Nginx: невозможно открыть основной скрипт

Я изо всех сил пытаюсь заставить NGINX и PHP-FPM эффективно общаться. Мой файл конфигурации NGINX содержит следующее определение для api смещение:

    location /api {
try_files $uri /api/index.php$is_args$args;
gzip    off;
fastcgi_pass    PHP:9000;
fastcgi_index   index.php;
fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
fastcgi_keep_conn off;
include         fastcgi_params;
}

и на моей машине PHP у меня есть следующая конфигурация пула:

[api]
listen = 9000
user = www-data
group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.status_path = /status

Затем я подключаю файл журнала сервера NGINX и, когда нажимаю на веб-сервер:

http://localhost/api
# or
http://localhost/api/index.php
# or ...
http://localhost/api/resources.json

Я могу видеть из журнала сервера NGINX, что NGINX правильно соответствует /api шаблон, но я получаю следующие ошибки:

[ошибка] 14 # 0: * 1 FastCGI отправлено в stderr: «Невозможно открыть основной скрипт: /app/html/websites/couchbase/api/index.php (нет такого файла или каталога)»

Где находится корневой каталог на машине PHP /app/html/websites/couchbase, Я в полном недоумении, что на самом деле означает эта ошибка или, что более важно, как ее отладить. Любая помощь будет принята с благодарностью.

постскриптум Я пробовал заменить $document_root ссылка в fast_cgi_param на жестко закодированные значения, чтобы увидеть, если это имеет значение. Это означает, что если я укажу на неверный каталог, это даст мне
No input file specified. ошибка. Единственное место, где я получаю ошибку, это когда она, по-видимому, указана в нужном месте.


Добавил это в случае, если это поможет прояснить … это файловая система в /app/html/websites/couchbase/api на машине PHP / FPM.

файловая система

Я создал test.php файл, который в основном просто эхо «ОК» назад, но это работает не лучше, чем основная цель запуска index.php,

примечание: я не был уверен, важны ли разрешения на выполнение — как вы можете видеть test.php они не указаны на картинке — но я пробовал их в обоих направлениях, и, похоже, это не имеет значения.

0

Решение

Ошибка жалуется на файл index.php, не найденный в корневом каталоге. Это под ...couchbase/api или находится под .../couchbase? Во втором случае вы можете исправить эту проблему с помощью перенаправления.

Я думаю, что вы можете двигаться try_files вне location блок. Я никогда не пользовалась $is_args а также $args в этом виде перенаправления, и я не проверял это, но ИМХО, я думаю, вы можете удалить его.

Я думаю, что вы можете решить эту проблему с помощью этой конфигурации:

root /app/html/websites/couchbase;

try_files $uri /api/index.php$is_args$args;

location /api {
rewrite /api/(.*) $1 break;
gzip    off;
fastcgi_pass    PHP:9000;
fastcgi_index   index.php;
fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
fastcgi_keep_conn off;
include         fastcgi_params;
}

У вас может быть более чистый файл конфигурации, если вы включите следующие директивы:

    fastcgi_index   index.php;
fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
fastcgi_keep_conn off;

внутри fastcgi_params файл.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]