扩展类异常时出现PHP“找不到类”错误

Posted

技术标签:

【中文标题】扩展类异常时出现PHP“找不到类”错误【英文标题】:PHP "Class not found" error when extending class Exception 【发布时间】:2015-07-11 06:59:10 【问题描述】:

我收到一个包含以下消息的页面:

致命错误:在第 29 行的 /home/mysite/public_html/lib/Varien/Exception.php 中找不到类“异常”

这是产生错误的行:

class Varien_Exception extends Exception  

更改调用全局命名空间 (\Exception) 的行没有帮助,我仍然收到相同的消息。此外,我没有收到有关异常类丢失文件的自动加载器警告,例如使用 extends Exception22 时会收到警告。

在将 magento 1.3 CE 安装迁移到新服务器后,该错误开始出现。每当我尝试打开 Magento Connect 管理器时,我都会得到它。 错误页面 url 如下所示:http://[MYSITE.COM]/index.php/admin/extensions_local/index/key/[SOMEID]/

我使用的是 PHP 5.4.39,我可以在其他 PHP 文件中扩展和使用 Exception。

【问题讨论】:

Magento Connect Manager 依赖于 PEAR。如果您只是更改了服务器,或者您尝试从 Magento CE 1.3 升级,我不确定您的描述。无论哪种情况,请查看 PEAR 安装及其对新服务器的依赖关系。 @greg_robbins,我刚换了一个新服务器,没有尝试升级。将检查 PEAR 文件。 【参考方案1】:

不要认为这是一个 PEAR 问题,对我来说这看起来像是与 Autoloader 相关的问题,通常与文件系统权限有关。

您可以使用 xdebug 和支持 dgbp 的编辑器/调试器来单步执行代码并查看实际发生的情况。

首先,我会检查您的 Magento 文件夹,以确保您的 PHP 实际上可以访问 Magento “lib/”、“var/cache/”和“app/”文件夹中的所有文件。

然后,排除琐碎的文件系统权限问题,您可以使用 xdebug(以及 emacs 或 NetBeans,如果您愿意),最终在 class 关键字之前使用“xdebug_break()”作为该类文件中的第一条指令。

【讨论】:

以上是关于扩展类异常时出现PHP“找不到类”错误的主要内容,如果未能解决你的问题,请参考以下文章

Android MapBox 充气错误。找不到类 MapView

xampp和PHP致命错误:未捕获错误:找不到类'DOMDocument'

更改命名空间时在 Laravel 中找不到类“\App\User”

在 Laravel 中找不到异常类

dalvikvm:找不到类

Tomcat & Spring Web - 找不到类异常 org.springframework.web.context.ContextLoaderListener