2012-12-20 24 views
1

关于此主题有许多问题,但我无法找到我的方案的答案。远程图像的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 answercurl变种,结果相同。

当我尝试使用较新的PHP版本的不同服务器上的相同脚本时,它工作正常。

项目服务器上的哪些设置可能会导致失败?有没有关于PHP 4.3.9我错过了,导致此失败?

请,请注意,我不能改变的PHP版本,我已经没有必要回答通知我升级或说服我的客户升级

编辑:改变upload_max_filesize为40MB,并max_execution_time 600没有不同的结果。

+0

尝试SSH到PHP4服务器并使用wget或其他方式下载文件。看看你是否得到类似的错误。 –

+0

@SalmanA我得到一个与'copy'相同的超时时间 - 这是否意味着服务器上的用户帐户不允许该类型的远程调用?如果是这样,那么这些问题会给我带来什么影响? – kontur

+2

与您的虚拟主机提供商交谈。超时意味着远程计算机没有响应*或*您和他们之间的防火墙正在静默地断开连接(不拒绝连接)。只有您的主机才能够调查此问题。 – Charles

回答

0

正如指出的@Charles和@SalmanA我在评论中,服务器上似乎存在阻止复制呼叫的连接问题。

基于@ SalmanA的评论,尝试从ssh shell使用wget显示类似的超时结果,表明阻塞的连接。

联系服务器主机并进一步询问是解决方案。

-1

您应该更改默认的max_execution_time在php.ini中的max_execution_time = 600 - 必须

请更改的默认值上传最大尺寸您需要在php.ini文件或thourgh使用代码的ini_set() ..这是有益的,当ü尝试只上传...

的upload_max_filesize = 40M

+0

感谢您的回答。根据您的输入编辑ini值,但结果相同。超时失败。 – kontur

+1

为什么“必须”?详细解释为什么最大执行时间*必须是600秒以及为什么必须更改* upload *文件大小?这里没有文件上传。上传设置用于从用户上传的文件,而不是通过流。 – Charles

+0

@Charles:你好我已经提到,如果文件上传在那里,那么它是需要好的...你没有看到??????? –