首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >phpUnit无法识别getenv / apache_getenv

phpUnit无法识别getenv / apache_getenv
EN

Stack Overflow用户
提问于 2012-10-10 16:50:13
回答 1查看 768关注 0票数 2

为了从代码库之外的路径加载我的ini文件,我使用apache来定义路径,而对于php,我使用apache_getenv / getenv

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

EN

回答 1

Stack Overflow用户

发布于 2012-10-16 07:32:36

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

代码语言:javascript
复制
 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都使用这个目录。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12815482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档