Laravel 家园/流浪者拒绝图像处理

Laravel 家园/流浪者拒绝图像处理,laravel,vagrant,Laravel,Vagrant,我遇到了宅地的问题。我有一段代码在在线开发服务器上运行良好,但在流浪者家园服务器上运行失败。 这段代码是一段ajax执行的代码,我上传了一个图像,保存在一个临时目录中,并将其发送回用户,然后用户对其进行裁剪。为此,我有两个函数,tempUpload和tempCrop。它在tempCrop中失败,触发它的最主要的一行是: $img = getimagesize($imgUrl); $imgUrl是一个带有临时文件夹中图像url的输入。在检查vagrant时,我看到这些图像具有属性-rwxrwxr

我遇到了宅地的问题。我有一段代码在在线开发服务器上运行良好,但在流浪者家园服务器上运行失败。 这段代码是一段ajax执行的代码,我上传了一个图像,保存在一个临时目录中,并将其发送回用户,然后用户对其进行裁剪。为此,我有两个函数,tempUpload和tempCrop。它在tempCrop中失败,触发它的最主要的一行是:

$img = getimagesize($imgUrl);
$imgUrl是一个带有临时文件夹中图像url的输入。在检查vagrant时,我看到这些图像具有属性-rwxrwxrwx 1 vagrant vagrant。控制台中出现的错误是“SyntaxError:JSON.parse:JSON数据第1行第2列的意外字符”

同样,这在在线版本中非常有效,所以我想这可能是权限问题或是环境设置问题。vagrant中临时文件夹的权限如下:drwxrwxrwx 1 vagrant vagrant

我已签入/app/storage/logs,收到的错误是:

'getimagesize(http://nominate.app:8000/temp/2078ec37e959dd733930ad758854ce4cb5f175de.jpg): failed to open stream: Connection refused'
我真的不知道还需要研究什么,特别是因为它在我拥有的另一个开发环境中运行良好,运行centOS

有什么想法吗


非常感谢。

答案是将路径而不是url放入
getimagesize

基本上,就您的虚拟机所知,它在端口80上提供服务。Vagrant将此端口无缝转发到主机的端口8000。调用
getimagesize
时,它首先尝试解析主机名(
namite.app
),如果成功,它会尝试在端口8000上启动与主机名的连接。我猜
namite.app
被配置为解析为
127.0.0.1
(虚拟机),它实际上没有监听端口8000


通过HTTP执行这些操作是个坏主意,因为它会减慢速度,并可能生成同一映像的多个临时副本。您可以使用Laravel来帮助您确定映像的本地路径(即,
getimagesize(public_path()“/temp/”$filename)

将我的主机文件更改为将homestead.app指向homestead VM的IP 192.168.10.10,而不是127.0.0.1解决了同样的问题。此外,我现在可以导航到而不是

感谢ClarkF为我指明了解决这个问题的正确方向


虽然我们不喜欢“它在开发中起作用,但在生产中不起作用”,但当它在生产中起作用而在开发中不起作用时,我们会更加好奇

非常感谢!你的解决方案很有效。非常感激;)Mariano@MarianoAlesandro你应该把这个标记为答案。如果你不知道怎么做/为什么,看看这个。