升级了nginx新版本,好像对 document_root 设置的文件夹如果是软链,有些变化了。假设 document_root 是 /data/web/www,而 /data/web/www 软链 -> /data/release/version1。
以前的nginx版本,在index.php里拿到的 DIR 是 /data/web/www,新的nginx版本,拿到的是 /data/release/version1。
如果用的发布系统是基于软链更新代码的,比如发布新版本由 /data/release/version1 切换到 /data/release/version2。
那么nginx好像有缓存,永远不会生效新的代码,改了软链后 index.php 拿到的 DIR 依然是 /data/release/version1 不会变成 version2,只能 service nginx reload。与 php 的opcache无关。
然后我试了下设置 fastcgi参数,
把 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
改成 fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
这个软链就可以自动更新了,index.php 拿到的 DIR 是最新的。
曾经我做个一个企业产品,老大说是企业的数据非常非常重要,一定要保留原始数据,一定不能真删除,然后就做了。
后来发现累死个人,最后过了半年多,数据改成真删除,但是找另外一个地方备份下。企业误删了是吧,好,花钱找回数据,我才不在我的程序代码里搞这么累的逻辑。