symfony 3应用程序在DebugClassLoader中以静默方式失败到require_once

时间:2016-07-08 05:52:09

标签: php symfony

我有一个名为FilterInput的PHP类。当我的基于Symfony(3.0.3)的应用程序调用{​​{1}}的静态成员函数时,会对Symfony FilterInput进行隐式调用。该方法称为DebugClassLoader,它的开头如下:

loadClass

我观察到的问题是,当执行到达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(); } ... 指令时,应用程序会无声地失败。也就是说,http请求返回空,include_once或我的apache日志中没有输出。我已验证dev.log变量包含完整且正确的$file。我还验证了这个文件是可读的。所以我的问题是:

  1. 为什么此时执行会停止?
  2. 为什么它在没有日志错误消息的情况下以静默方式失败或在响应中返回数据。
  3. 编辑:进一步的信息:如果我填写垃圾路径,例如" /富/栏"然后我收到错误消息/path/to/FilterInput.php;所以,大概是无声的失败与 在给定路径上的文件

    有关。

1 个答案:

答案 0 :(得分:3)

如果指令如下,

require_once将无声地失败;

defined('PATH_BASE') or die();

出现在源文件的头部;并且所需的定义不存在