2012-01-28 81 views
0

我正在從遠程服務器複製文件使用副本(並嘗試各種版本與fopen,file_get_contents等),但約2分鐘後腳本超時。沒有錯誤,沒有例外。在錯誤日誌文件中,它表示:(70007)指定的超時已過期:ap_content_length_filter:apr_bucket_read()失敗PHP複製/ fopen等超時

任何線索?

這裏是我的資源限制的php.ini配置:

;;;;;;;;;;;;;;;;;;; 
; Resource Limits ; 
;;;;;;;;;;;;;;;;;;; 

max_execution_time = 0  ; Maximum execution time of each script, in seconds 
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data 
memory_limit = 104M  ; Maximum amount of memory a script may consume (8MB) 

,這可能是相關的,太:

; Default timeout for socket based streams (seconds) 
default_socket_timeout = 60 

我的文件夾中添加了一個新的php.ini

[PHP] 

max_input_time = 3600 

default_socket_timeout = 3600 

max_execution_time = 3600 

upload_max_filesize = 10M 

但這並沒有幫助。編輯: 這似乎是與文件大小的問題。一旦達到2MB,服務器就會失敗。我必須聯繫我的主機。

+1

是從網上實際可以到達的文件嗎? – periklis 2012-01-28 14:53:05

+0

感謝您檢查SO。通常我們不會將感謝或簽名線放在問題或答案上。可以查看[FAQ](http://stackoverflow.com/faq)瞭解更多信息。 – cspray 2012-01-28 14:53:29

+0

是的。它可以直接通過瀏覽器直接下載文件。 – user28061 2012-01-28 14:56:19

回答

2

您的php.ini文件最有可能配置爲在120秒後超時。我不知道什麼樣的服務器,你有,但是我的主要php.ini文件位於: /etc/php5/apache2/php.ini

如果你不能找到它,運行的phpinfo ()在腳本中,你會發現目錄中你的主要的php.ini

在資源限制的標題,在幾秒鐘內改變超時和重新啓動服務器

+0

看着stackuser10210的回答後,我意識到你需要在php.ini中更改兩個設置。 max_input_time和max_execution_time – 2012-01-28 15:09:22

+0

現在我通過System/shell嘗試了wget。但也達不到2000kb。你是否爲了繞過2000 kb的限制而改變了我所需要的? – user28061 2012-01-29 02:47:41

2

它可能是max_input_time(默認值是60秒?)。你可能想嘗試在php.ini中增加它。如果你在共享主機上,你可以嘗試在目錄中放置一個php.ini文件。

max_input_time = 3600

會給你一個小時。

+0

我創建了一個php.ini,並通過php_ini_loaded_file和ini_get_all對其進行了驗證。我的新php.ini文件的內容是'[PHP] max_input_time設置= 3600 default_socket_timeout = 3600 的max_execution_time = 3600 的upload_max_filesize = 10M'但是這並沒有幫助。 – user28061 2012-01-28 15:42:36

0

您還可以檢查php.ini中的:

; Default timeout for socket based streams (seconds) 
default_socket_timeout = 60