关于这个主题有很多问题,但我找不到我的方案的答案。
我正在处理的客户端项目托管在运行 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 复制一个文件就可以很好地复制该文件。
我还尝试了这个答案curl
的变体,结果相同。
当我在具有较新 PHP 版本的不同服务器上尝试相同的脚本时,它工作正常。
项目服务器上的哪些设置会导致此失败?我缺少关于 PHP 4.3.9 的某些内容会导致此操作失败吗?
请注意,我无法更改 PHP 版本,也不需要建议我升级或说服我的客户升级的答案
编辑:更改upload_max_filesize
为 40MB 和max_execution_time
600 没有不同的结果。