2012-12-18 33 views
19

我正在用php5-fpm運行nginx並且想要啓用display_errors。 我正在運行一個虛擬主機,所以請幫助制定一種啓用display_errors,display_startup_errors的方法。display_errors for php5-fpm不能與nginx一起工作

我試着修改/etc/php5/fpm/php.ini

;display_errors 
Default Value: On 
Development Value: On 
;Production Value: Off 
;display_startup_errors 
Default Value: On 
Development Value: On 
;Production Value: Off 
;error_reporting 
Default Value: E_ALL 
Development Value: E_ALL 
;Production Value: E_ALL & ~E_DEPRECATED 
;html_errors 
Default Value: On 
Development Value: On 
;Production value: Off 
;log_errors 
Default Value: On 
Development Value: On 
;Production Value: On 

是不是需要有多個ini文件爲每個不同的虛擬主機,虛擬主機的確爲使PHP配置有什麼區別?

我也在嘗試set_ini(),但它沒有顯示任何效果。在對php.ini文件進行更改後,我重新啓動了nginx和php5-fpm。

+0

檢查您的phpinfo()輸出爲您的php.ini - 記住php ini值可以在「額外的ini(dir)文件」中覆蓋,在php-fpm.conf文件中,在.user.ini文件中以及當然在執行php腳本文件 – Cybot

回答

37

php.ini對於php-fpm沒有任何幫助。

如果您使用的是php-fpm:您必須在與您的Web應用程序關聯的fpm池配置中提供配置更改。這些位置取決於您的系統。在大概的位置是:

  • /etc/php-fpm.d/mydomain.conf(如果事情已經成立整齊)
  • /etc/php-fpm.conf(如果你只使用PHP-FPM一個CONF)

你的配置路徑是從不同我的,所以捅一下,看看你在裏面有什麼。如果/etc/php-fpm.d/中存在合適的conf,請勿在/etc/php-fpm.conf中進行更改。

如果您不使用php-fpm:請使用正確的配置更新php.ini。

更正您的配置:在問題中顯示的配置中,您沒有註釋文檔,而沒有提供正確的設置。您最好撤消這些更改,因爲PHP不會理解它們。

正確的線爲PHP-FPM是:

; enable display of errors 
    php_flag[display_errors] = on 
    php_flag[display_startup_errors] = on 

正確的線路正常PHP是:

; enable display of errors 
    display_errors = On 
    display_startup_errors = On 

建議:不要使用在這些選項生產環境。最好的祝願。

+0

注意,在''中加入這些; FPM配置;'不在'下;全局選項;' –

+0

爲什麼?我在';'下添加'php_flag [html_errors] = off'; FPM配置;',但我覺得它不工作︰'php-fpm -i | grep html_errors html_errors => On => On' – ahui

+0

出於某種原因,我不得不使用php_admin_flag而不是php_flag,希望這可以幫助某人和我一樣的船 –

10

如果您有/etc/php5/fpm/php.ini(用於Debian,Ubuntu樣式配置),則對此文件的更改應該生效,並且可以通過更改特定的/etc/php5/fpm/pool.d/*.conf文件來更改每個池的配置。

+0

http://stackoverflow.com/questions/10665783/php-ini-which-one –

4

在我的案例Zend的錯誤和nginx的 - PHP5 FPM,這樣的工作:

只有我把public/index.php

error_reporting(E_ALL | E_STRICT); 
ini_set('display_errors', 1); 

沒有If(){...}

但如果只把上面的代碼,顯示錯誤,將給出:

Parse error: syntax error, unexpected '}', expecting ',' or ';' in /usr/local/nginx/html/ZendSkeletonApplication/module/Album/src/Album/Controller/AlbumController.php on line 12 

An其他的東西!設置此代碼:

'display_not_found_reason' => true, 
'display_exceptions'  => true, 

在module.config.php這樣的:

'view_manager' => array(
    'template_path_stack' => array(
     'album' => __DIR__ . '/../view', 
     'display_not_found_reason' => true, 
     'display_exceptions'  => true, 
    ), 
), 

我得到一個error.log中的所有錯誤在屏幕上:

Fatal error: Uncaught exception 'Zend\View\Exception\InvalidArgumentException' with message 'Invalid path provided; must be a string, received boolean' in /usr/local/nginx/html/ZendSkeletonApplication/vendor/zendframework/zendframework/library/Zend/View/Resolver/TemplatePathStack.php:201 Stack trace: #0 /usr/local/nginx/html/ZendSkeletonApplication/vendor/zendframework/zendframework/library/Zend/View/Resolver/TemplatePathStack.php(149): Zend\View\Resolver\TemplatePathStack->addPath(true) #1 /usr/local/nginx/html/ZendSkeletonApplication/vendor/zendframework/zendframework/library/Zend/Mvc/Service/ViewTemplatePathStackFactory.php(38): Zend\View\Resolver\TemplatePathStack->addPaths(Array) #2 [internal function]: Zend\Mvc\Service\ViewTemplatePathStackFactory->createService(Object(Zend\ServiceManager\ServiceManager), 'viewtemplatepat...', 'ViewTemplatePat...') #3 /usr/local/nginx/html/ZendSkeletonApplication/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(939): call_user_func(Array, Object(Zend in /usr/local/nginx/html/ZendSkeletonApplication/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php on line 946 

我沒有」在系統(Ubuntu 14.04)中觸摸配置文件爲php-fpm。

+0

感謝您的意見。這是一個非常古老的問題,但你仍然分享你的解決方法,謝謝。 – Pranav

+0

謝謝你的歡迎,stackoverflow幫助我,我回報青睞:-) – vlad