从exec()运行脚本时PHP ini_set(“max_execution_time”)失败

时间:2013-02-22 21:28:41

标签: php exec php-ini

简单起见:

通过经典网址调用调用script.php时,

ini_set(“max_execution_time”)工作

当从另一个php脚本/进程通过exec()函数运行script.php时,

ini_set(“max_execution_time”)不起作用

现在,我的解决方案不仅仅是继续选项1,因为它可以正常工作,因为即将激活script.php的exec()函数和几个类似的函数通过(外部)cron作业调用。

有谁知道发生了什么?

如果是以下帮助,则激活代码:

exec('/usr/bin/env php ./script.php');
sleep(30);
exec('/usr/bin/env php ./script2.php');

激活脚本和script2.php,当ini_set()返回FALSE时,它们都会失败。

4 个答案:

答案 0 :(得分:1)

正如Barmar指出的那样,有几个用于php的INI文件。至少一个用于CGI,一个用于CLI。你也可以通过ini_set或.htaccess里面设置一些东西。 有一些配置文件定义了哪些设置可能在哪里更改。安静可能不允许您在CLI脚本中修改max_execution_time。如果我没记错的话,默认情况下它应该是0也是无限的。

答案 1 :(得分:1)

如上所述Barmar,两个版本使用不同的PHP.ini文件。

CLI版本是否以安全模式运行?

在安全模式下,可能无法在运行时使用ini_set()设置max_execution_time。此外,CLI版本的执行时间限制默认为0。

http://php.net/manual/en/info.configuration.php

答案 2 :(得分:0)

使用set_time_limit(seconds)代替ini_set()

答案 3 :(得分:0)

如果启用了它,则可能是 xdebug ,因为它默认将时间设置为0(以防止在设置断点时脚本超时)。可能会将其锁定为0。这是我的问题。