2016-06-15 129 views
0

我想上傳大文件到FTP服務器上Laravel存儲功能,它保持給我erorr如何Laravel通過存儲,FTP上傳大文件5.1

出的內存(分配473432064) (試圖分配467402752個字節)

我試圖改變php.ini中的內存限制,它仍然是行不通的,當我上傳文件到服務器正常工作,並在大小dosent梅特。

我嘗試過什麼,但沒有工作。 再次 - 我試圖通過FTP上傳。

一個問題:有一種方法來uplaod文件直接從客戶端的FTP服務器?我看到存儲先上傳到我的服務器,然後轉移到第二個服務器...

+0

你可以顯示什麼'php.ini'配置你有變化和價值? – weigreen

+0

我設置的post_max_size,內存限制的upload_max_filesize到10240M,I'ts文件共享網站和文件可以到10甚至20 GB,當我做uplaod直接到我的服務器工作正常,但當我嘗試上傳到第二服務器它沒有工作,我現在正在使用Apache和FileZila在localhost上工作 –

回答

0

最後我用curl代替存儲解決了這個問題。

$ch = curl_init(); 
$localfile = $file->getRealPath(); 
$fp = fopen($localfile, 'r'); 
curl_setopt($ch, CURLOPT_URL, 'ftp://domain/' . $fileName); 
curl_setopt($ch, CURLOPT_USERPWD, "user:pass"); 
curl_setopt($ch, CURLOPT_UPLOAD, 1); 
curl_setopt($ch, CURLOPT_INFILE, $fp); 
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile)); 
curl_exec($ch); 
$error_no = curl_errno($ch); 
curl_close($ch); 

工作完美!最好是laravel的Storage選項。

0

它肯定聽起來像一個PHP的限制,可能提高內存限制爲不這樣做雖然,導線的最佳途徑除了麻煩之外,請相信我。

我可以從我的頭頂想到的最好的方法是使用特使(服務器腳本方法不部署服務),以組建一個SSH的任務,這樣你的工作正在執行PHP之外的所以你不會受到相同的內存限制。您的Envoy腳本(envoy.blade.php在您的項目根目錄中)可能看起來像這樣;

@servers(['your_server_name' => 'your.server.ip']) 

@task('upload', ['on' => ['your_server_name']]) 
    // perform your FTP setup, login etc. 
    put your_big_file.extension 
@endtask 

我只帶了這些設置爲這是從詹金斯調用,所以我不知道您是否可以從內Laravel啓動它部署的工作,但我從這樣的命令行啓動;

vendor/bin/envoy run myJobName 

就像我說的我不太記得的唯一的事情是,如果你可以從內部Laravel自身運行的特使,以及文檔似乎已有些朦朧,絕對值得檢查出雖然:)

選項

https://laravel.com/docs/5.1/envoy