mac环境下,mamp中表单上传文件,为什么上传的缓存文件是不可读的。_Linux_编程问答 问题: 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 headershost(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.devwx.piian.cn是指向我的电脑,我的localhost是指向wx.dev程序目录的,于是我在server_name里加上了wx.piian.cn,现在上传文件没有问题了,有大神能仔细讲讲中间的细节吗?
我现在是知其然不知其所以然

上一篇capistrano 部署PHP代码 如何不在web服务器上使用git
下一篇百度快照显示升级维护,百度蜘蛛爬取的问题
明星图片
相关文章
《 mac环境下,mamp中表单上传文件,为什么上传的缓存文件是不可读的。》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)