symfony 3应用程序无法默默地在DebugClassLoader中require_once
问题描述:
我有一个名为FilterInput
的PHP类。当我的基于Symfony(3.0.3)的应用程序调用FilterInput
的静态成员函数时,将隐式调用Symfony的DebugClassLoader
。该方法被称为loadClass
并开始像这样:symfony 3应用程序无法默默地在DebugClassLoader中require_once
public function loadClass($class)
{
ErrorHandler::stackErrors();
try {
if ($this->isFinder) {
if ($file = $this->classLoader[0]->findFile($class)) {
require_once $file;
}
} else {
call_user_func($this->classLoader, $class);
$file = false;
}
} finally {
ErrorHandler::unstackErrors();
}
...
我观察的问题是,当执行到达include_once
指令,应用程序就会失败。也就是说,http请求返回空,并且在dev.log
或我的apache日志中没有输出。我已验证$file
变量包含完整且正确的/path/to/FilterInput.php
。我也验证过这个文件是可读的。所以我的问题是:
- 为什么执行停止在这一点?
- 它为什么会在没有日志错误消息或响应中返回数据的情况下失败。
编辑:进一步的信息:如果我填写垃圾路径,例如, “/ foo/bar”然后我得到一个错误信息Compile Error: AppBundle\Components\Factory::getDBO(): Failed opening required '/foo/bar' (include_path='.:')
;所以大概无声的失败与某个事实有关,是在给定路径的文件。
答
require_once
将失败默默地病程的如果一条指令,例如:
defined('PATH_BASE') or die();
出现在源文件的头部;并且所需的定义不存在
您确定处于开发模式?在你的app.php中,确保你像下面这样实例化你的AppKernel:'$ kernel = new AppKernel('dev',true);' –
帮助我找到了很多先前忽略的错误 - 但我仍然**无声**在require_once上失败 – Black