首先确认PHP运行模式,再根据SAPI类型修改对应php.ini中的max_execution_time,并调整PHP-FPM或Web服务器相关超时设置,最后验证配置生效。

如果您在Ubuntu系统中配置了PHP的超时时间,但发现脚本运行仍然超出设定限制,可能是由于多个配置层或服务类型导致设置未生效。以下是排查和解决该问题的具体步骤:
一、确认PHP运行模式
不同的PHP运行方式(如Apache模块、FPM、CLI)会读取不同的配置文件,超时设置需针对具体环境修改。应先明确当前使用的是哪种SAPI(Server API)。
1、创建一个PHP文件,写入并访问该页面。
2、查找“Server API”项,确定是Apache、FPM还是CLI等模式。
立即学习“PHP免费学习笔记(深入)”;
3、根据结果定位对应的php.ini或配置文件路径。
二、修改php.ini中的执行时间限制
该设置控制脚本最大执行时间,适用于所有运行模式,但必须在正确的php.ini文件中修改。
1、找到对应SAPI的php.ini文件位置,通常位于/etc/php//apache2/php.ini或/etc/php//fpm/php.ini。
2、搜索max_execution_time,将其值改为所需秒数,例如max_execution_time = 300。
3、保存文件后重启相应的服务,如Apache或PHP-FPM。
三、调整PHP-FPM特定配置
当使用PHP-FPM时,除了php.ini外,进程管理器自身的超时参数也会影响脚本执行。
1、打开PHP-FPM的pool配置文件,通常路径为/etc/php//fpm/pool.d/www.conf。
2、检查并设置以下参数:
request_terminate_timeout = 300(强制终止请求时间)
request_slowlog_timeout = 60(记录慢请求日志的时间阈值)
3、修改完成后执行sudo systemctl reload php-fpm使配置生效。
四、检查Web服务器层面的超时设置
Apache或Nginx可能设置了独立于PHP的请求超时,这会导致即使PHP允许长时间运行,请求仍被提前中断。
1、对于Nginx,编辑站点配置文件,确保fastcgi_read_timeout足够大:
fastcgi_read_timeout 300;
2、对于Apache,若使用mod_proxy_fcgi,检查ProxyTimeout指令是否设置合理值。
3、修改后重启Web服务器:sudo systemctl restart nginx或sudo systemctl restart apache2。
五、验证CLI环境下的超时行为
在命令行执行PHP脚本时,不会受Web服务器或FPM影响,但仍需确认是否加载了预期的配置文件。
1、运行php -i | grep "max_execution_time"查看实际生效值。
2、如果需要永久更改,编辑CLI使用的php.ini文件,路径可通过php --ini查看。
3、也可在执行时通过命令行覆盖:php -d max_execution_time=300 script.php。
以上就是如何解决Ubuntu上PHP超时设置无效的解决办法?的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1336231.html
微信扫一扫
支付宝扫一扫