关于此主题有许多问题,但我无法找到我的方案的答案。远程图像的PHP复制失败,超时
我正在处理的客户端项目托管在运行PHP 4.3.9的服务器上,我试图将远程映像复制到服务器。这总是失败时出现超时:
var_dump(
copy('http://domain.com/path/to/image.jpg',
'/opt/www/myfolder/myimage.jpg')
);
这个正在错误消息:Warning: copy(http://domain.com/path/to/image.jpg): failed to open stream: Connection timed out in /opt/www/myfolder/my-script.php on line xx bool(false)
我做的几个INI设置,这将似乎罚款我得无影无踪。
var_dump(
ini_get('upload_max_filesize'),
ini_get('post_max_size'),
ini_get('max_execution_time'),
ini_get('max_input_time'),
ini_get('allow_url_fopen'));
跟踪显示:
string(2) "8M" string(2) "8M" string(2) "30" string(2) "60" string(1) "1"
所以allow_url_fopen
似乎被启用,而其他设置似乎也没关系。我尝试了不同的图像,所有图像都可以通过浏览器访问,所有图像尺寸都很小,不同的远程主机。我的服务器的目标目录是可写的,例如从我自己的服务器的URI复制文件就可以很好地复制文件。
我也试过this answer的curl
变种,结果相同。
当我尝试使用较新的PHP版本的不同服务器上的相同脚本时,它工作正常。
项目服务器上的哪些设置可能会导致失败?有没有关于PHP 4.3.9我错过了,导致此失败?
请,请注意,我不能改变的PHP版本,我已经没有必要回答通知我升级或说服我的客户升级
编辑:改变upload_max_filesize
为40MB,并max_execution_time
600没有不同的结果。
尝试SSH到PHP4服务器并使用wget或其他方式下载文件。看看你是否得到类似的错误。 –
@SalmanA我得到一个与'copy'相同的超时时间 - 这是否意味着服务器上的用户帐户不允许该类型的远程调用?如果是这样,那么这些问题会给我带来什么影响? – kontur
与您的虚拟主机提供商交谈。超时意味着远程计算机没有响应*或*您和他们之间的防火墙正在静默地断开连接(不拒绝连接)。只有您的主机才能够调查此问题。 – Charles