PHP require 在清除 APC 缓存后仅工作一次,然后出现 500 错误。为啥?
Posted
技术标签:
【中文标题】PHP require 在清除 APC 缓存后仅工作一次,然后出现 500 错误。为啥?【英文标题】:PHP require works only once after clearing APC Cache, then 500 error. Why?PHP require 在清除 APC 缓存后仅工作一次,然后出现 500 错误。为什么? 【发布时间】:2011-08-23 06:01:08 【问题描述】:我遇到了 APC 问题。 Parent.php 包含另一个具有相对路径的文件。例如
require_once 'child.php';
如果我清除 apc_cache,然后加载 Parent.php,它可以工作。 但是在随后的加载中,它失败了。死于 require_once 'child.php'。
很明显,当保存到 apc_cache 时,相对路径在下次加载时没有被正确翻译...
apc.include_once_override 已关闭,所以不是这样。
还能是什么?
编辑添加错误: PHP致命错误:require_once()[function.require]:需要打开失败 '路径/到/file.php'
【问题讨论】:
【参考方案1】:如果您的配置中有apc.stat=0
,您的问题可能与此错误有关:https://bugs.php.net/bug.php?id=61854
在我的 PHP 配置中设置 apc.stat=1
为我解决了这个问题。
【讨论】:
哈哈对不起,应该更仔细地检查日期。也许这会在某个时候对其他人有所帮助:-) 感谢您的回答,对我帮助很大:)【参考方案2】:这是一个延伸,但我在处理硬链接文件时看到了与此相关的问题,这些文件可能通过不同的路径缓存。
无论如何,听起来像一个错误。您使用的是最新的 PHP 和 APC 版本吗?如果是这样,请发布错误报告。
【讨论】:
是的,它可以通过不同的路径缓存...您是如何解决您的问题的?顺便说一句:PHP 版本 => 5.2.16 joedevon:我很可能通过明确指定路径来解决这个问题。 原来不可能这样。当我清除缓存时,它第一次就失败了……这是一个测试框……所以如果没有备用路径调用它,它已经失败了。【参考方案3】:我曾经在 APC 上也遇到过一个关于相对路径的奇怪问题。问题是它因致命错误而死,我通过关注thread here 解决了这个问题:
在我的项目中,以下几行使其工作:
// Realpath needed to fix problem with APC
require_once realpath($fullPath);
【讨论】:
我遇到了另一个错误。但是添加 realpath 可能不会有什么坏处。我会告诉你这是否有效。【参考方案4】:有同样的问题,为我的 php 版本下载正确的版本解决了这个问题。你可以在这里找到一堆版本(如果在 Windows 上运行):http://dev.freshsite.pl/php-accelerators/apc.html
【讨论】:
以上是关于PHP require 在清除 APC 缓存后仅工作一次,然后出现 500 错误。为啥?的主要内容,如果未能解决你的问题,请参考以下文章