关于网友提出的“ mac环境下,mamp中表单上传文件,为什么上传的缓存文件是不可读的。”问题疑问,本网通过在网上对“ mac环境下,mamp中表单上传文件,为什么上传的缓存文件是不可读的。”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: mac环境下,mamp中表单上传文件,为什么上传的缓存文件是不可读的。
描述:系统:mac
php环境:MAMP
php框架:laravel
当我使用表单上传时,发现上传上来的缓存文件是不可读的。
echo substr(sprintf("%o", fileperms($this->photo->path())), -4); // 结果为0600
而我系统缓存目录的权限是777,现在我就无法使用laravelUploadedFile
实例来处理上传文件,因为一旦使用
$request->photo->store('photos')
就会弹出权限不够错误。错误如下:
[2018-01-09 17:22:57] local.ERROR: Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException: The file /Applications/MAMP/tmp/php/phpUulx0L could not be accessed in /Users/pan/code/wechat/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php:125
Stack trace:
#0 /Users/pan/code/wechat/vendor/symfony/http-foundation/File/File.php(79): Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser->guess('/Applications/M...')
#1 /Users/pan/code/wechat/vendor/symfony/http-foundation/File/File.php(58): Symfony\Component\HttpFoundation\File\File->getMimeType()
求救!
解决方案1:服务器(nginx)
通过http
请求request headers
的host(wx.piian.cn)
行,匹配你配置的server_name
,当匹配成功时,就会把数据按cgi接口
定义的格式,发送给php
处理。
至于域名(wx.piian.cn)
如何找到对应的服务器,是因为会把域名的A记录
或者CNAME
解析到对应的公网IP
上。而域名的DNS
解析会优先在系统hosts
记录里面寻找。
解决方案2:终于找到问题了。
首先,我是在做微信开发,所以我的测试环境有两个域名,一个是本地的域名wx.dev
,一个是wx.piian.cn
,
然后我发现wx.dev
是可以上传文件的,wx.piian.cn
是不能上传文件的。然后我查看nginx的配置,发现我的程序目录的server_name
只有wx.dev
,wx.piian.cn
是指向我的电脑,我的localhost是指向wx.dev
程序目录的,于是我在server_name
里加上了wx.piian.cn
,现在上传文件没有问题了,有大神能仔细讲讲中间的细节吗?
我现在是知其然不知其所以然
以上介绍了“ mac环境下,mamp中表单上传文件,为什么上传的缓存文件是不可读的。”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4536059.html