【问题标题】:php ini settings for error reporting用于错误报告的 php ini 设置
【发布时间】:2014-02-18 18:08:00
【问题描述】:

我在 VPS 上运行我的网站。我可以为 LAMP 创建 1 个实例。我想为开发服务器和生产服务器上的错误报告设置不同的设置。

有没有办法在同一个 php.ini 文件中为开发和生产定义两种不同的设置?

我要设置

error_reporting(-1);

用于开发服务器,并且

error_reporting(0);

用于生产服务器。

【问题讨论】:

  • 那么php在读取ini文件时如何知道它是开发服务器还是生产服务器?
  • 这就是我想要弄清楚的。我知道有办法做到这一点。但是,我不知道怎么做?
  • 您可以在 apache 站点而不是 php.ini 上应用该配置...这样您就可以在 apache 中拥有两组配置(2 个站点)并且您基本上可以转一个又一个 - 开
  • 我们可以在VPS中创建两个apache的设置吗?

标签: php php-ini


【解决方案1】:

您不能在同一个php.ini 文件中拥有两组配置。 但是您可以在Apache 中拥有多个站点

在每个站点中,您都可以配置与环境相关的设置。

例如在prod.conf:

php_value error_reporting 0

并且,在dev.conf

php_value error_reporing -1

您还可以添加其他内容,例如 display_errorserror_log 定义。 然后,在生产服务器上打开prod.conf 站点,在开发服务器上打开dev.conf

【讨论】:

    【解决方案2】:

    您不能直接在 php.ini 中执行此操作。有几种方法可以实现您想要的:

    • 您可以直接在 Apache vhost conf 中使用设置来明确设置该 vhost 所需的值。

    • 您可以在 .htaccess 文件中使用指令,一个用于您的实时应用,一个用于您的开发应用。

    • 您可以使用环境变量来触发您的应用程序来设置正确的设置。在 Apache 配置或 .htaccess 中,将“APP_MODE”之类的环境变量设置为“开发”或“生产”。然后您的应用程序代码可以查找该变量并相应地设置报告。例如,if (getenv('APP_MODE') == 'development') { error_reporting(E_ALL); }

    • 您可以使用为您执行此操作的框架。例如 Zend Framework 使用环境变量和 ini 文件的组合。

    【讨论】:

    • 当我试图编辑 .htaccess 文件时,它给了我内部服务器错误。我在我的项目目录的 httpd.conf 文件中定义了 AllowOverride All。我错过了什么?
    • 可能是语法错误或拼写错误?你到底在文件里放了什么?也许是权限错误?确保运行 Apache 的用户可以读取该文件。
    • <Directory "/home/website/public_html"> Options All MultiViews AllowOverride All Order allow,deny Allow from </Directory>
    • 和.htaccess文件的权限是:644
    • .htaccess 应该存在于您想要影响的站点的顶层(即 document_root)并包含 php_value error_reporting 0 - 或您想要设置的任何值。
    猜你喜欢
    • 1970-01-01
    • 2013-10-17
    • 2017-06-11
    • 2012-04-24
    • 2017-09-25
    • 2012-09-16
    • 2015-05-19
    • 2017-08-24
    • 1970-01-01
    相关资源
    最近更新 更多