为了从代码库之外的路径加载我的ini文件,我使用apache来定义路径,而对于php,我使用apache_getenv / getenv
似乎phpunit不理解apache_getenv命令-这是一个已知的问题吗?除了硬编码路径之外,还有其他解决方案吗?
发布于 2012-10-16 07:32:36
当您从命令行运行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都使用这个目录。
https://stackoverflow.com/questions/12815482
复制相似问题