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 错误。为啥?的主要内容,如果未能解决你的问题,请参考以下文章

php可选缓存APC

PHP之APC缓存详细介绍(学习整理)

php 数据缓存

如何在 APC 缓存中存储 PHP 会话?

php apc缓存以及与redis的对比

PHP 的 APC 用户数据缓存的完整替代方案?