【问题标题】:CakePHP Sending FilesCakePHP 发送文件
【发布时间】: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()

堆栈跟踪:

  1. {main}() /Path/To/My/htdocs/mysite/app/webroot/index.php:0
  2. Dispatcher->dispatch() /Path/To/My/htdocs/mysite/app/webroot/index.php:96
  3. Dispatcher->_invoke() /Path/To/My/htdocs/mysite/lib/Cake/Routing/Dispatcher.php:160
  4. Controller->invokeAction() /Path/To/My/htdocs/mysite/lib/Cake/Routing/Dispatcher.php:185
  5. ReflectionMethod->invokeArgs() /Path/To/My/htdocs/mysite/lib/Cake/Controller/Controller.php:490
  6. PagesController->load_media() /Path/To/My/htdocs/mysite/lib/Cake/Controller/Controller.php:490
  7. CakeResponse->file() /Path/To/My/htdocs/mysite/app/Controller/PagesController.php:227
  8. 文件->__construct() /Path/To/My/htdocs/mysite/lib/Cake/Network/CakeResponse.php:1265
  9. 文件->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


【解决方案1】:

问题解决了。我有一个插件,它有一个类文件夹来接管它。

【讨论】:

  • 你能用什么插件更新你的答案吗?如果您的解决方案是杀死那个插件或另一个插件?这样,这个答案可以帮助其他有同样问题的人。另外,一旦你这样做了,接受你自己的答案:)
  • 我有一个使用类文件夹的自定义插件(在我之前)。我只是将类重命名为“MyFolder”并相应地更新了代码。它说我将能够在 2 天内接受我自己的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 2014-01-17
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
  • 2014-12-10
  • 1970-01-01
相关资源
最近更新 更多