invalid contrller specified 错误分析及解决

今天部署项目时在开发环境正常的服务,在线上部署后报错

invalid contrller specified

打开错误日志,发现有个 mkdir  Permission denied in ...

修改目录及文件权限为777解决。

chmod -R 777 code

之后查了下zend framework 源码。

    public function isDispatchable(Zend_Controller_Request_Abstract $request)
    {
        $className = $this->getControllerClass($request);
        if (!$className) {
            return false;
        }

        if (class_exists($className, false)) {
            return true;
        }

        $fileSpec    = $this->classToFilename($className);
        $dispatchDir = $this->getDispatchDirectory();
        $test        = $dispatchDir . DIRECTORY_SEPARATOR . $fileSpec;
        return Zend_Loader::isReadable($test);
    }

知道了如下几种错误会引发此异常。

  1. 从请求中未获取到控制器类名
  2. 控制器类文件不存在
  3. 控制器类文件无读取权限

解决方法:仔细检查请求路径,修改代码权限(修改为777进行测试)。

原文地址:https://www.cnblogs.com/kala00k/p/13879635.html