簡體   English   中英

PHP FPM為所有PHP錯誤返回HTTP 500

[英]PHP FPM returns HTTP 500 for all PHP errors

我正在使用PHP-FPM運行nginx。 我處理php文件的nginx配置如下所示:

location  ~ \.php$ {
            set $php_root /home/me/www;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $php_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
        }

現在,我有一個簡單的php文件,如下所示:

<?php
     ech "asd"
     asd""
?>

是的,有一個明顯的錯誤。 當我嘗試訪問php文件,而不是跟蹤語法錯誤時,我總是得到HTTP 500內部服務器錯誤。我嘗試使用error_reporting(-1); 但它總是返回HTTP 500.如何讓PHP打印確切的錯誤而不是返回通用的HTTP 500?

嘗試在php.ini找到以下行:

 display_errors = Off

然后開啟

為了發布更完整的答案,我使用了php.ini的生產版本,其中display_errors = Off。 我現在所做的不是全局打開,而是對於需要報告錯誤的文件,我使用ini_set('display_errors', 'On'); 在文件的開頭。

我也遇到了這個問題,我在php.ini設置了display_errors = Off ,但它不起作用。 然后我在php-fpm.conf發現php[display_errors]=off ,它將覆蓋php.ini的值,它可以工作。

顯示錯誤只會影響錯誤打印到輸出的事實。

如果您打開了日志錯誤,則除非顯示已關閉,否則日志中仍會丟失錯誤,這不是預期的行為。

預期的行為是,如果啟用了日志,則會發現錯誤。 如果顯示已打開,則在屏幕/輸出上發現錯誤。 如果兩者都在錯誤上。

當前版本有一個錯誤的錯誤。

對於Ubuntu 12.10,在php-fpm-pool-config文件中:

php_flag[display_errors] = on

在php.ini文件中:

display_errors = On

您可以通過這種方式顯示錯誤:轉到php.ini並找到display_errors ,您應該看到display_errors = Off ,只需將Off替換為On ,重新啟動php並再次運行。

如果你從Remi repo php72安裝。 它是默認用戶和組與apache |

轉到你的www.conf文件,找到/etc/opt/remi/php72/php-fpm.d/www.conf

並改變

user=nginx
group=nginx

在重新啟動你的php fpm之前

systemctl restart php72-php-fpm

CENTOS REMI PHP7.2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM