在CentOS 7.4环境下禁用PHP命令行的Opcache
解决CentOS 7.4下CLI模式禁用PHP Opcache的方法
根据你的场景——Apache以模块方式运行PHP 7.2.4(Opcache正常启用),但需要在命令行执行脚本时禁用Opcache,这里有几个可靠的解决方案:
方法1:单次执行时临时禁用(无需修改配置文件)
如果你只是偶尔需要在CLI下禁用Opcache,直接在执行脚本时通过-d参数临时覆盖配置即可:
php -d opcache.enable=0 your_script.php
这个参数会临时将opcache.enable设置为0,仅对当前这次脚本执行生效,不会影响Apache模块的PHP运行。
验证是否生效:执行php -d opcache.enable=0 -i | grep "opcache.enable",输出应该显示opcache.enable => Off => Off。
方法2:通过主php.ini的SAPI分段配置永久禁用CLI的Opcache
PHP 5.3及以上版本支持在php.ini中按SAPI(服务器应用编程接口)分段配置,这样可以让CLI和Apache模块使用不同的Opcache设置:
- 打开主配置文件:
vi /etc/php.ini
- 在文件末尾添加以下内容:
[CLI] opcache.enable = 0 opcache.enable_cli = 0
这里opcache.enable_cli是专门控制CLI模式下Opcache的开关,双重保险确保禁用。
3. 保存退出后,验证CLI的配置:
php -i | grep "opcache.enable"
你应该会看到CLI模式下这两个选项都为Off,而Apache的phpinfo()里依然保持On。
方法3:为CLI创建独立的配置文件
如果不想修改主php.ini,也可以给CLI单独准备一个配置文件:
- 复制主配置文件作为CLI专用配置:
cp /etc/php.ini /etc/php-cli.ini
- 编辑
/etc/php-cli.ini,找到opcache.enable和opcache.enable_cli的配置行,修改为:
opcache.enable = 0 opcache.enable_cli = 0
- 以后执行CLI脚本时,指定这个配置文件:
php -c /etc/php-cli.ini your_script.php
这种方式的好处是完全隔离CLI和Apache的PHP配置,适合需要对CLI做更多自定义设置的场景。
注意事项
- 确保你修改的是正确的配置文件:执行
php -i | grep "Loaded Configuration File"可以确认CLI加载的配置文件路径,和你看到的一致是/etc/php.ini。 - 如果你的系统中Opcache的配置是在
/etc/php.d/目录下的单独文件(比如10-opcache.ini),也可以在那个文件里添加[CLI]分段来设置,效果和修改主php.ini一样。
内容的提问来源于stack exchange,提问作者stefan nowak
相关产品推荐
相关产品推荐

