Назад | Перейти на главную страницу

php-fpm возвращает пустой ответ на nginx

nginx подключается к php-fpm через fastcgi, используя стандартный /etc/nginx/fastcgi_params в блоке локации.

При подключении к /.status (php-fpm.ini :: ping.path) из командной строки с cgi-fcgi -bind, результат возвращается, как ожидалось (набор X-Powered-By, тело ответа и т. д.).

При запросе с помощью nginx результат возвращается пустым (установлено X-Powered-By, без длины тела или содержимого). nginx возвращает 200, поскольку получил «правильный» ответ.

Наблюдая за tcpdump, я изолировал запросы на четность в их заголовках FCGI (за вычетом связанных с пользователем переменных env, все еще устанавливаемых оболочкой).

Стандарт factcgi_params файл не содержит ключевой строки для SCRIPT_FILENAME.

location ~ \.php$ {
                include fastcgi_params;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}

Добавьте его и перезапустите nginx.

Что ж, ваш вопрос немного расплывчатый. Так называемый «белый экран смерти» (WSOD) может быть вызван бесконечным количеством вещей. Но кое-что я делаю, если сталкиваюсь с этим:

  • Активируйте в своем php.ini:

    display_errors = 1
    display_startup_errors = 1
    error_log = /path/to/file
    error_reporting = -1 ; (the -1 activates absolutely everything)
    log_errors = 1
    
  • Активируйте в своем php-fpm.conf:

    error_log = /path/to/file
    
  • Активируйте для каждой конфигурации пула php-fpm:

    catch_workers_output = 1
    
  • Повторите свой запрос и проверьте все журналы (включая журнал ошибок nginx)
  • Увеличьте уровень ведения журнала (например, отладка на nginx)

Если ничего из этого не помогает вам определить проблему, опубликуйте полную информацию о системе и конфигурации. Без этого никто не сможет дать вам точного ответа.