【发布时间】: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