【问题标题】:php.ini: not loading intended filephp.ini:未加载预期文件
【发布时间】:2014-04-10 11:29:01
【问题描述】:

我做了一些更改,将生产环境和开发环境分开,这样每个环境都有自己的 php.ini 文件。但是,生产版仍然会加载开发版。如果我将开发者拿出来,则不会加载任何文件根据 phpinfo() 状态:

Loaded Configuration File   (none)

即使我撤消了所有更改,所以应该加载/etc中的原始php.ini,但仍然没有加载文件,这更令人沮丧。

我检查了 apache 和本地日志,没有发现异常。

每次更改时,我都会运行:

service httpd restart

在我的 vhosts.conf 中,我有如下几行:

<VirtualHost *:80>
    ServerName dev.example.com
    ServerAlias dev.example.com
    DocumentRoot /srv/www/dev.example.com/
    ...
    PHPINIDir /srv/www/dev.example.com/etc
    ...
<VirtualHost *:80>
    ServerName stage.example.com
    ServerAlias stage.example.com
    DocumentRoot /srv/www/stage.example.com/
    ...
    PHPINIDir /srv/www/stage.example.com/etc
    ...

在 php.ini 中,一切都不同了:

display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

CentOS 上的 PHP 5.3.3

我怎样才能弄清楚这一点,以便为每个环境加载正确的文件?

【问题讨论】:

  • 在此处查看配置文件可能位于的位置。 PHP 在哪里寻找它(以及如何告诉它在哪里寻找):php.net/manual/en/configuration.file.php
  • @CBroe:谢谢你的链接,但我已经很熟悉了。

标签: php


【解决方案1】:

由于您使用 PHPINIDir 指令并且您的 Apache 工作正常,这意味着您将 PHP 作为 Apache 模块运行。 PHP 解释器只有一个全局实例,因此只能有一个 php.ini。

您需要将 PHP 作为 FastCGI 或 provide settings in a different file 运行。

【讨论】:

  • 好的。那讲得通。那么,有没有办法让每个虚拟主机使用单独的 php.ini 文件?我浏览了链接页面,没有看到任何明显的内容。
  • 不,这是不可能的,这就是我试图解释的。如果您不想在文档根目录中进行设置,则必须使用 Apache 文件以及 php_valuephp_flag 指令。
  • 谢谢!将查看 php_value 指令。
猜你喜欢
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 2012-10-27
  • 2014-06-27
  • 2015-02-24
  • 2017-12-30
  • 1970-01-01
相关资源
最近更新 更多