【问题标题】:Upload file CakePHP Fatal Error上传文件 CakePHP 致命错误
【发布时间】:2018-06-14 22:36:22
【问题描述】:

感谢 Josegonzalez/Upload,我尝试在我的 cakephp 应用上上传文件。我有以下错误。 在本地一切正常,但在我的服务器中却不行。 顺便说一句,我的服务器上可以使用 wordpress 或简单的 PHP 表单上传文件。 我必须指定

upload_tmp_dir = /tmp

让它在我的 php.ini 中适用于 Wordpress。我也试过了

open_basedir = /tmp

但它仍然不适用于 cakephp。

Fatal error: [InvalidArgumentException] Invalid stream reference provided #0 /home/rom1/public_html/cakephp/vendor/zendframework/zend-diactoros/src/Stream.php(58): Zend\Diactoros\Stream->setStream('/tmp/phpKu6O1j', 'r') #1 /home/rom1/public_html/cakephp/vendor/zendframework/zend-diactoros/src/UploadedFile.php(164): Zend\Diactoros\Stream->__construct('/tmp/phpKu6O1j') #2 /home/rom1/public_html/cakephp/vendor/cakephp/cakephp/src/Http/ServerRequest.php(460): Zend\Diactoros\UploadedFile->getStream() #3 /home/rom1/public_html/cakephp/vendor/cakephp/cakephp/src/Http/ServerRequest.php(361): Cake\Http\ServerRequest->_processFiles(Array, Array) #4 /home/rom1/public_html/cakephp/vendor/cakephp/cakephp/src/Http/ServerRequest.php(300): Cake\Http\ServerRequest->_setConfig(Array) #5 /home/rom1/public_html/cakephp/vendor/cakephp/cakephp/src/Http/ServerRequestFactory.php(56): Cake\Http\ServerRequest->__construct(Array) #6 /home/rom1/public_html/cakephp/vendor/cakephp/c in /home/rom1/public_html/cakephp/vendor/cakephp/cakephp/src/Error/ErrorHandler.php on line 180

警告:file_exists():open_basedir 限制生效。文件(/home/rom1/public_html/cakephp/logs/error.log)不在允许的路径中:(..)在 /home/rom1/public_html/cakephp/vendor/cakephp/cakephp/src/Log /Engine/FileLog.php 第 188 行

警告:file_put_contents():open_basedir 限制生效。文件(/home/rom1/public_html/cakephp/logs/error.log)不在允许的路径中:(..)在 /home/rom1/public_html/cakephp/vendor/cakephp/cakephp/src/Log /Engine/FileLog.php 第 133 行

警告:file_put_contents(/home/rom1/public_html/cakephp/logs/error.log):无法打开流:/home/rom1/public_html/cakephp/vendor/cakephp/cakephp/src/Log 中不允许操作/Engine/FileLog.php 第 133 行

致命错误:[InvalidArgumentException] 提供的流引用无效 #0 /home/rom1/public_html/cakephp/vendor/zendframework/zend-diactoros/src/Stream.php(58): Zend\Diactoros\Stream->setStream( '/tmp/phpKu6O1j', 'r') #1 /home/rom1/public_html/cakephp/vendor/zendframework/zend-diactoros/src/UploadedFile.php(164): Zend\Diactoros\Stream->__construct('/ tmp/phpKu6O1j') #2 /home/rom1/public_html/cakephp/vendor/cakephp/cakephp/src/Http/ServerRequest.php(460): Zend\Diactoros\UploadedFile->getStream() #3 /home/rom1/ public_html/cakephp/vendor/cakephp/cakephp/src/Http/ServerRequest.php(361): Cake\Http\ServerRequest->_processFiles(Array, Array) #4 /home/rom1/public_html/cakephp/vendor/cakephp/cakephp /src/Http/ServerRequest.php(300): Cake\Http\ServerRequest->_setConfig(Array) #5 /home/rom1/public_html/cakephp/vendor/cakephp/cakephp/src/Http/ServerRequestFactory.php(56) : Cake\Http\ServerRequest->__construct(Array) #6 /home/rom1/public_html/cakephp/vendor/cakephp/c in /home/rom1/public_html/cak第 180 行的 ephp/vendor/cakephp/cakephp/src/Error/ErrorHandler.php

【问题讨论】:

  • 您是否尝试阅读错误消息?只需谷歌“open_basedir 限制生效”
  • 我当然做到了!当然我google了!在写 stackoverflow 之前,我整个下午都在研究这个问题。正如我告诉你的那样,我尝试将 open_basedir = /tmp 放入我的 php.ini 文件中,我也尝试对其进行评论,但它不起作用
  • 更新 php.ini 后是否重启了 Apache?
  • 是的,我确实重启了 apache

标签: php cakephp upload cakephp-3.0


【解决方案1】:

我终于明白问题不在我的php.ini中了。

在使用 userdir 时,我必须访问 /etc/apache2/mods-available/userdir.conf

然后改变

php_admin_value open_basedir ".."

php_admin_value open_basedir ..:/tmp

但我不明白为什么它使用 Wordpress 而不是 CakePHP……

【讨论】:

    猜你喜欢
    • 2014-01-26
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    相关资源
    最近更新 更多