【发布时间】:2014-07-02 00:52:26
【问题描述】:
我正在努力用我的自定义 php.ini 覆盖 php cli 配置
我的自定义 php.ini
max_execution_time = 90
memory_limit = 256M
safe_mode = Off
运行 php cli
php -c /home/env/php.ini -r 'phpinfo();' | grep 'memory_limit'
输出
memory_limit => 256M => 256M
但是,自定义 php.ini 似乎没有覆盖 max_execution_time 或 safe_mode,因为它输出 0 和 On 而不是 90 和 Off。
运行这个简单的脚本
#!/usr/bin/php -c /home/env/php.ini
<?php echo 'memory_limit: ' . ini_get('memory_limit');
输出默认的 cli 配置 (128M) 而不是预期的 256M。
运行这个简单的脚本
#!/usr/bin/php -d max_execution_time=90
<?php echo 'max_execution_time: ' . ini_get('max_execution_time');
按预期输出 90。
到目前为止,我已经设法在运行时仅覆盖了一个配置指令,因此任何帮助都非常感谢如何覆盖多个配置指令。
编辑:
php -a
php > parse_ini_file('/home/env/php.ini');
输出没有错误,所以我想我的自定义 php.ini 没问题。我只是发现执行
#!/usr/bin/php -c /home/env/php.ini
<?php echo 'memory_limit: ' . ini_get('memory_limit'); phpinfo();
表示已加载配置文件 =>(无)。这似乎是问题所在。 PHP CLI 似乎没有加载我的自定义 php.ini 文件,即使路径正确且语法似乎也很好。
解决方案:
似乎不可能在运行时用 shebang 覆盖多个配置指令,至少对我来说是这样。但是删除 shebang 并执行以下命令为我解决了这个问题。
php -d max_execution_time=90 -d memory_limit=256M -d safe_mode=Off -f test.php
【问题讨论】:
-
#!/usr/bin/php -c /home/env/php.ini<?php echo 'memory_limit: ' . ini_get('memory_limit');这对我有用!你能仔细检查你的 php.ini (和路径) -
如何执行测试文件?例如,您问题底部的那个?
-
@hek2mgl 我的测试文件是这样从控制台执行的:$ ./cli.php
-
看起来不错。你在 Linux 上工作吗?
-
是的,linux、nginx 和 php-fpm/fastcgi。我也会尝试使用带有 mod_php 的虚拟机、linux、apache。同样的故事,所以很明显我做错了什么或配置错误。
标签: php command-line-interface php-ini