如何在使用Nginx的PHP 5 (FPM)中禁用代码缓存?

12

当我保存 PHP 文件的更改并重新加载后,无论我刷新多少次,它仍会执行旧版本的脚本大约1分钟左右。过了1分钟(或者更长时间),它才会执行当前版本。

如何禁用此行为以使更改立即生效?

设置为 PHP-FPM 与 Nginx。


1
nginx默认不缓存。Linux默认没有文件缓存。您是否设置了您的服务器? - skrilled
是的,我已经设置好了服务器。不过,我相信新版本的PHP已经内置了opcode缓存。 - Nick
在你的ini文件中注释掉opcache扩展(opcache.so)。 - skrilled
/etc/php5/fpm/php.ini中未找到opcache.so的实例。 - Nick
尝试opcache.enable=Off-但根据我所读的,opcache默认也没有启用,必须在执行./configure时明确启用。 - skrilled
我也遇到了同样的问题,但是是在使用Apache(mod_fastcgi)和PHP-FPM时出现的。OpCache和APC都没有安装。同时,在使用Apache和mod_fcgi时也有相同的问题。而且,这不是浏览器缓存的问题。强制刷新页面可以更新静态文件,但是PHP代码却仍然过期。 - dmuir
4个回答

7
我的解决方案在Zend OPCache配置中,而不是APC。
我在Windows 8.1上安装了WNMP(PHP 5.5.11)的原始版本,并在我的php.ini文件的[opcache]部分发现Zend OPCache已启用,并且仅在60秒内检查文件更改(opcache.revalidate_freq=60)。查找该配置指令并将其设置为0,以强制OPCache在每个请求中检查php文件。

2

在我的情况下(本地开发服务器,Nginx 1.10.0,PHP 7.0.13,没有OPCache,没有APC),将realpath_cache_ttl设置为0,然后重新启动PHP-FPM服务就可以解决问题。但是在生产服务器上更改此值时必须小心。


1

我遇到了同样的问题。我的问题与APC扩展缓存有关。 您可以使用PHP函数apc_clear_cache。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接