关于这个主题有很多问题,但我找不到我的方案的答案。
我正在处理的客户端项目托管在运行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,但没有不同的结果。
答案 0 :(得分:0)
正如@Charles和@SalmanA在评论中指出的那样,服务器上似乎存在连接问题,阻止了复制调用。
根据@ SalmanA的评论,尝试使用ssh shell中的wget
显示了类似的超时结果,表明连接被阻止。
联系服务器主机并进一步询问是这里的解决方案。
答案 1 :(得分:-2)
你应该在php.ini中将默认的max_execution_time更改为max_execution_time = 600 - 必须
请将上传最大尺寸从默认值更改为您在php.ini文件中的需要,或使用 ini_set()将代码更改为..当您尝试仅上传时,此功能非常有用...
upload_max_filesize = 40M