phpUnit不识别getenv / apache_getenv

时间:2012-10-10 08:50:13

标签: php phpunit

要从代码库外部的路径加载我的ini文件,我使用apache来定义路径,使用php我使用apache_getenv / getenv

似乎phpunit不理解apache_getenv命令 - 这是一个已知的问题,除了硬编码路径之外还有其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

当您从命令行运行php时,它不使用任何Apache配置。但您仍然可以访问环境变量。因此,首先更改为在任何地方使用getenv(而不是apache_getenv)。然后,如果您从bash启动php,请按以下方式运行:

 export MY_CONFIG = "/path/to/my.ini"
 phpunit

每个bash会话只需要导出一次。你可以用2行bash脚本包装它。

这种方法有一个问题,那就是你现在有两个地方的配置。墨菲定律告诉我们这两个文件会很难失去同步。因此,另一种方法是在php.ini(*)中使用自定义条目。然后在您的代码中使用get_cfg_var来获取这些值。请注意,有些人不喜欢这种方法,例如create arbitrary values in php.ini明智地使用它:如果您的机器专用于需要此设置的应用程序,那么这是一个公平的选择。如果它只是众多脚本中的一个脚本,并且在多用户机器上,那么它是可疑的。

第三种方法是与您的脚本一起保存的真实ini文件的符号链接。然后你的脚本将始终找到它,但它已启动。我最喜欢这种方法,但它不是那么有活力。我猜测使用环境变量是因为你为不同的虚拟主机使用不同的值,或类似的东西。

*:确保使用apache和cli常用的php.ini文件:某些安装程序还有一个仅适用于apache的配置文件,仅适用于cli。在Ubuntu机器上,我会在/etc/php5/conf.d下创建一个名为myconfig.ini的文件,因为它更容易维护,并且该目录由apache和cli使用。