gpt4 book ai didi

PHP __FILE__ 给出移动文件的错误位置

转载 作者:可可西里 更新时间:2023-11-01 01:05:28 28 4
gpt4 key购买 nike

我正在使用 PHP 解压缩 PHP 应用程序本身的更新。这是通过从更新服务器抓取一个 zip 文件,将其解压缩,然后递归地将解压缩的文件移动到应用程序当前存在的文件上来完成的。

问题是下次我去使用该应用程序时,__FILE__(至少在一个新文件中)给出了 zip 文件最初解压缩的目录中的位置。由于这不是文件的实际位置,因此在使用 __FILE__ 查找当前目录的后续 require 函数调用中出现错误。

最奇怪的部分:我所要做的就是在编辑器中打开文件并重新保存(例如添加和删除空格),然后 PHP 将正确解析文件路径。

有什么可能出错的想法吗?似乎 PHP 以某种方式“知道”文件的来源并获取该信息而不是当前所在的位置。重新保存文件会使 PHP(或者可能是文件系统)唤醒。

最佳答案

我发现了问题。我应该猜到这是一个缓存问题。问题是服务器正在使用 APC 操作码缓存。我需要将此文件放在解压缩文件夹位置中的位置。由于该文件已经存在于 APC 缓存中(具有相同修改日期的完全相同的文件),当它在新位置需要它时,它使用 APC 操作码缓存中的缓存文件,包括其旧路径!

看起来像一个错误,它会混淆这样的路径,但修复很容易。如果我在移动文件后重置操作码缓存,问题就解决了。

关于PHP __FILE__ 给出移动文件的错误位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12065024/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com