php脚本超时由max_execution_time控制,默认web环境30秒、cli环境不限;修改需调整php.ini、web服务器配置(如apache timeout、nginx fastcgi_read_timeout)及php-fpm参数,dreamweaver作为编辑器无法干预运行时超时。

PHP 脚本执行超时是 max_execution_time 控制的
默认值通常是 30 秒,超过这个时间 PHP 就会中止脚本并报错 Fatal error: Maximum execution time of X seconds exceeded。这个限制在 CLI 模式下默认为 0(不限时),但在 Web 服务器(如 Apache、Nginx)环境下由 PHP 配置决定,和 Dreamweaver(DW)本身无关——DW 只是编辑器,不运行 PHP。
真正要改的是 PHP 的运行环境配置:
-
php.ini中修改max_execution_time = 120(单位秒),改完需重启 Web 服务 - 在脚本开头用
set_time_limit(120)动态延长(设为 0 表示不限时) - Apache 下可通过
.htaccess添加php_value max_execution_time 120(需允许 override) - Nginx + PHP-FPM 场景下,还需检查
fastcgi_read_timeout是否匹配,否则 Nginx 会先断连
为什么在 DW 里改不了 PHP 超时时间
Dreamweaver 是代码编辑器,不是 PHP 解释器或 Web 服务器。它无法干预 PHP 的运行时行为,也不能覆盖 php.ini 或 Web 服务器的超时设置。
常见误解场景:
立即学习“PHP免费学习笔记(深入)”;
- 在 DW 的“站点设置”里找不到 PHP 超时选项 → 正常,那里只管本地测试服务器路径、FTP 等
- 用 DW 内置的“实时视图”看到脚本卡住或报错 → 实际是本地 Apache/XAMPP/MAMP 的 PHP 在执行超时
- 误以为 DW 的“首选参数”里有 PHP 运行配置 → 没有,它不启动 PHP
set_time_limit() 的使用限制和坑点
这个函数只能在脚本运行中调用,且受 safe_mode(已废弃)和 disable_functions 配置影响。如果被禁用,调用会静默失败或触发警告。
关键注意事项:
- 每次调用都会重置计时器,不是累加。例如:脚本已运行 25 秒,再执行
set_time_limit(10),最多还能跑 10 秒 - CLI 模式下默认不限时,
set_time_limit(0)在 CLI 中无实际效果 - 某些共享主机禁止该函数,错误提示可能是
Warning: set_time_limit(): Cannot set maximum execution time - 若脚本在
sleep()、file_get_contents()等阻塞操作中超时,set_time_limit()可能不生效,需配合default_socket_timeout或 cURL 的CURLOPT_TIMEOUT
Web 服务器层超时也要同步调整
只改 PHP 的 max_execution_time 不够。比如你设成 300 秒,但 Apache 的 Timeout 是 60 秒,或者 Nginx 的 proxy_read_timeout 是 60 秒,请求照样会被中间层切断。
典型组合检查项:
- Apache:
Timeout 300(httpd.conf)、php_value max_execution_time 300(.htaccess 或 vhost) - Nginx:
fastcgi_read_timeout 300(server 或 location 块) - PHP-FPM:
request_terminate_timeout = 300s(www.conf,注意单位是秒+字母 s) - cURL 请求内嵌调用时:
curl_setopt($ch, CURLOPT_TIMEOUT, 240)
漏掉任意一层,都可能让脚本在“看似正常”的配置下突然中断。尤其在调试耗时 API 调用或大文件导入时,这点最容易被忽略。











