【发布时间】:2014-06-08 10:47:30
【问题描述】:
我正在尝试渲染存在于我的 webroot 之外的图像/pdf。所以这就是我在控制器中发送文件的操作 - 如here 所述。但是我遇到了致命错误。任何想法为什么以及如何解决这个问题?我正在运行 CakePHP 2.4.5。
$this->autoRender = false;
$path = '/path/to/valid/file.pdf';
$this->response->file($path);
return $this->response;
致命错误:调用未定义的方法 Folder::slashTerm()
堆栈跟踪:
- {main}() /Path/To/My/htdocs/mysite/app/webroot/index.php:0
- Dispatcher->dispatch() /Path/To/My/htdocs/mysite/app/webroot/index.php:96
- Dispatcher->_invoke() /Path/To/My/htdocs/mysite/lib/Cake/Routing/Dispatcher.php:160
- Controller->invokeAction() /Path/To/My/htdocs/mysite/lib/Cake/Routing/Dispatcher.php:185
- ReflectionMethod->invokeArgs() /Path/To/My/htdocs/mysite/lib/Cake/Controller/Controller.php:490
- PagesController->load_media() /Path/To/My/htdocs/mysite/lib/Cake/Controller/Controller.php:490
- CakeResponse->file() /Path/To/My/htdocs/mysite/app/Controller/PagesController.php:227
- 文件->__construct() /Path/To/My/htdocs/mysite/lib/Cake/Network/CakeResponse.php:1265
- 文件->pwd() /Path/To/My/htdocs/mysite/lib/Cake/Utility/File.php:91
【问题讨论】:
-
我没有名为文件夹的模型。我在这里使用 PagesController 来测试和澄清这篇文章。它最终会生活在其他地方。使用的控制器应该对此致命错误没有影响 - 会吗?
-
当我做 get_class() - 它正确返回“文件夹”。但是,当我执行 get_included_files() 时,它会返回一个大列表,其中包括:/lib/Cake/Utility/File.php 但我在那里看不到 /lib/Cake/Utility/Folder.php。为什么会这样?我的 File.php 有 App::uses('Folder', 'Utility');在顶部。很奇怪。
-
什么应该足以解决问题?当我这样做时: get_class_methods($this->Folder) 它返回一个空数组。
-
我想我找到了问题所在。我有一个带有类文件夹的插件/供应商。我想我快要解决这个问题了。谢谢大家,你们的意见帮助我找到了问题。
标签: cakephp