当您从命令行运行 php 时,它不使用任何 Apache 配置。但是您仍然可以访问环境变量。因此,首先更改为getenv
在任何地方使用(而不是apache_getenv
)。然后,如果您是从 bash 启动 php,请像这样运行它:
export MY_CONFIG = "/path/to/my.ini"
phpunit
每个 bash 会话只需要导出一次。您可以将其封装在 2 行 bash 脚本中。
这种方法有一个问题,即您现在在两个地方进行了配置。墨菲定律告诉我们,这两个文件会非常努力地不同步。因此,另一种方法是在 php.ini (*) 中使用自定义条目。然后在您的代码中使用get_cfg_var来获取这些值。请注意,有些人不喜欢这种方法,例如在 php.ini 中创建任意值 明智地使用它:如果您的机器专用于需要此设置的应用程序,那么这是一个公平的选择。如果它只是众多脚本中的一个,并且在多用户机器上,那么它是可疑的。
第三种方法是与脚本一起保存的真实 ini 文件的符号链接。然后你的脚本总会找到它,不管它是怎么启动的。我最喜欢这种方法,但它不是那么动态。我猜测使用环境变量的目的是因为您对不同的虚拟主机使用不同的值,或者类似的东西。
*:确保使用 apache 和 cli 通用的 php.ini 文件:一些设置也有一个仅用于 apache 和 cli 的配置文件。在 Ubuntu 机器上,我会在 /etc/php5/conf.d 下创建一个名为 myconfig.ini 的文件,因为它更易于维护,并且该目录由 apache 和 cli 使用。