關於此主題有許多問題,但我無法找到我的方案的答案。遠程圖像的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