【问题标题】:PHP set_time_limit() does not work, safemode is offPHP set_time_limit() 不起作用,安全模式已关闭
【发布时间】:2012-08-23 15:12:23
【问题描述】:

我尝试通过

禁用 PHP 脚本中的时间限制
set_time_limit(0);

但它不起作用;在系统默认设置为 30 秒后脚本仍会中止。 max_execution_time 设置 - 由 phpinfo()set_time_limit(0) 之后显示 - 对于主值和本地值仍然显示 30 秒。它还显示安全模式已关闭。

你知道出了什么问题吗?它是 PHP 5.3.3 (cli) 在 CentOS 6.2 和 Apache 2.2.15 上运行。

【问题讨论】:

  • 您是在共享主机上还是在专用服务器上?
  • 它是专用服务器上的虚拟主机。我对虚拟主机具有 root 访问权限。
  • 您的服务器可能已通过 Suhosin Hardened PHP 补丁禁用了 set_time_limit() 功能。
  • 我认为 set_time_limit 在运行 CLI 时没有任何影响。另见:bugs.php.net/bug.php?id=37306
  • 对不起,“cli”信息有误(我只是在命令行中查找了 PHP 版本)。该脚本通过 Apache PHP 模块调用。

标签: php


【解决方案1】:

我现在能够解决问题。原因是

php_admin_value max_execution_time "30"

...在虚拟主机配置中。如果在此处设置,则 PHP 脚本不能覆盖时间限制。解决方案是将其设置在 php.ini 而不是 Apache 配置中 - 允许覆盖 ...

max_execution_time = 30

或为 apache 配置中的某些目录定义例外,例如

<Directory /path/to/my/scripts>
  php_admin_value max_execution_time "600"
</Directory>

我还尝试使用 指令为单个文件定义异常,但没有奏效。

【讨论】:

    猜你喜欢
    • 2015-05-02
    • 2013-06-30
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    相关资源
    最近更新 更多