【发布时间】:2012-09-19 23:34:32
【问题描述】:
我正在使用 Silex 开展一个项目。在一个特定的文件中,我添加了一个use 语句让自动加载器包含一个特定的php 文件。稍后在文件中,我使用该类。开发服务器上一切正常,但是当我进入生产环境时,我收到了Fatal error: Class not found 消息。编辑:两台服务器现在都使用 PHP 5.4.4。
是否有任何类型的安装特定问题可能导致此问题?我可以确认 composer 生成的两个命名空间自动加载文件是相同的。
为了完整起见,这里是包含语句:
use Instaphp;
这里是后面代码中类的使用:
$app['instaphp'] = $app->share(function() use ($app) {
if($app['tagframe.instagram_token'] === null) {
return Instaphp\Instaphp::Instance();
} else {
return Instaphp\Instaphp::Instance($app['tagframe.instagram_token']);
}
});
$app['instaphp.config'] = $app->share(function() use ($app) {
return Instaphp\Config::Instance();
});
这是确切的错误:
Fatal error: Class 'Instaphp\Config' not found in /var/www/silexsandbox/src/TagFrame/Silex/TagFrameServiceProvider.php on line 89
更新:我应该补充一点,在我正在处理的相当大的代码库中,我在其他任何地方都没有遇到过这样的错误,所以我知道这并不像所有命名空间都不起作用那么简单。
【问题讨论】:
-
可能听起来微不足道,但您确定您已在生产服务器上安装了供应商(或在最新更改后更新)?
-
你在运行 PHP-FPM 吗?也许启用了 APC?您可以尝试重新加载 FPM 工作人员吗?
标签: php namespaces silex