Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP文件为移动的文件提供了错误的位置_Php - Fatal编程技术网

PHP文件为移动的文件提供了错误的位置

PHP文件为移动的文件提供了错误的位置,php,Php,我正在使用PHP解包PHP应用程序本身的更新。这是通过从更新服务器抓取一个zip文件,解压缩它,然后递归地将解压缩的文件移动到应用程序当前存在的文件上来完成的 问题是下次我使用该应用程序时,_FILE__(至少在一个新文件中)给出了zip文件最初解压缩的目录中的位置。因为这不是文件的实际位置,所以在后续的require函数调用中会出现错误,这些调用使用_文件__)来查找当前目录 最奇怪的是:我所要做的就是在编辑器中打开文件并重新保存(例如添加和删除一个空格),然后PHP将正确解析文件路径 你知道

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

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

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


你知道哪里出了问题吗?PHP似乎不知何故“知道”文件来自何处,并且正在获取这些信息,而不是它当前所在的位置。重新保存文件会使PHP(或者可能是文件系统)苏醒。

PHP将文件以不同的名称保存在临时位置。我猜解压过程在temp目录中创建文件,然后移动它们,却找不到文件


我可能弄错了,不太理解您的问题,但请尝试输出文件名及其路径,在“移动”操作中也是如此,我发现了问题。我应该猜到这是缓存问题。问题是服务器正在使用APC操作码缓存。我需要这个文件在解压文件夹的位置。由于该文件已存在于APC缓存中(完全相同的文件,修改日期相同),因此当它需要将其放在新位置时,它将使用APC操作码缓存中的缓存文件,包括其旧路径


看起来像一个bug,它会像那样混淆路径,但修复很容易。如果我在移动文件后重置操作码缓存,它会修复问题。

了解所涉及的文件系统和操作系统会很有帮助。对不起,操作系统是linux ubuntu,文件系统是ext3。唯一相关的代码是对文件的引用,以获取包含在大量其他无用代码中的require语句中的目录路径。我将尝试获取一个较小的测试示例,并将其发布在这里。