已禁用OPcache与JIT,PHP脚本仍不响应代码变更求助
排查步骤与解决方案
确认服务器端文件是否真的更新
直接在服务器上查看文件内容,排除编辑器路径与实际执行路径不一致的问题:cat /path/to/your/custom_module/your_script.php同时检查文件inode,确认文件是否被真正修改(修改后inode会变化):
ls -i /path/to/your/custom_module/your_script.php清除PHP的realpath缓存
PHP的realpath缓存可能会缓存文件路径映射,即使opcache禁用也会影响代码更新感知。可临时修改php.ini(或对应PHP-FPM pool的配置文件):realpath_cache_size = 0 realpath_cache_ttl = 0重启PHP-FPM后测试,也可在脚本开头临时添加代码强制清除:
clearstatcache(true);检查并禁用Apache缓存模块
若Apache启用了缓存模块,可能会缓存动态响应导致代码变更不生效。临时禁用并重启Apache:sudo a2dismod cache cache_disk sudo systemctl restart apache2彻底清理Drupal底层缓存
除常规缓存清理外,手动删除Drupal的PHP缓存目录:rm -rf sites/default/files/php/*若使用Drush工具,执行:
drush cr确保PHP-FPM进程完全重启
避免旧进程残留导致代码未重新加载:sudo systemctl stop php8.1-fpm sudo ps aux | grep php-fpm # 确认无残留进程 sudo systemctl start php8.1-fpm用最简脚本验证环境
在自定义模块目录下创建test.php,内容:<?php echo "Current time: " . date('Y-m-d H:i:s'); ?>通过浏览器或curl访问该脚本,观察时间是否随刷新变化。如果时间不变,说明问题出在服务器环境而非Drupal;如果时间变化,再排查Drupal的模块加载、路由缓存或钩子注册问题。
内容的提问来源于stack exchange,提问作者jprj
相关产品推荐
相关产品推荐

