簡體   English   中英

如何在PHP中將文件從URL保存到Sourceforge Web服務器?

[英]How to save file from URL to Sourceforge web server in PHP?

我在SourceForge上有一個簡單的虛擬主機。 SourceForge上的所有Web托管都使用SFTP

現在,我想在另一台服務器上獲取一個文件(我沒有管理權限 ;但是,我可以在網絡瀏覽器中正常查看它。例如: http://data.example.com/videos/fun.mp4http://data.example.com/videos/fun.mp4 。)到我在SourceForge上的虛擬主機(主機結構是: /home/project-web/my-own-project/htdocs/my-folder )。

我已經在許多問題上閱讀了這些答案,例如:

我試過所有的答案。 它顯示了成功消息; 但是,我的服務器上沒有文件。


然后,我嘗試將CHMOD更改為777 (我知道它是損壞;因此,我只嘗試進行測試)。 並且,也沒有文件; 在其他答案中,有一個空文件。

我用過phpinfo(); 為了檢查cURL ,它(始終)被啟用。


你能告訴我在做清單上有什么問題嗎? 並且,請告訴我:“如何通過PHP將文件從URL上傳到SourceForge虛擬主機?”。


我的問題與Stack Overflow上存在的問題沒有重復
我使用了20 KB的文件進行測試; 但是,我服務器上的上傳文件是空的。

按使用政策更新https//sourceforge.net/p/forge/documentation/Project%20Web%20and%20Developer%20Web/#outbound-connectivity

由於過去的濫用行為,嚴禁從Web服務器對其他主機進行出站訪問,並被防火牆規則阻止。 這包括訪問其他SourceForge.net主機; 此策略的唯一例外是訪問我們的項目數據庫服務器和授權的外發電子郵件。 項目Web服務器無法訪問SCM服務器。 應檢索其他SourceForge.net主機所需的任何內容,並將其存儲為文件或數據庫條目,然后可以從項目Web服務器上的腳本訪問這些條目。 雖然我們的PHP安裝(和其他語言)包括對LDAP,IMAP和Postgres等內容的支持,但我們不允許使用這些協議進行入站或出站連接。 包含這些組件,因此在SourceForge.net Web服務器上部署第三方代碼時可以保留庫存; 並支持測試需要這些功能的項目代碼。

因此,防火牆阻止了連接外部主機的能力,但這是不可能的。


請在您的問題中發布您的phpinfo()輸出。 特別是系統詳細信息(頂部),核心,卷曲,套接字和標准部分值(省略任何機密信息,如數據庫密碼/連接)

有很多東西可以阻止它保存,用戶權限(在可執行文件上),服務器配置,suPHP(沙盒用戶),chroot web目錄,php配置等。我們需要看到你用來診斷的實際代碼你的specific issue

至於要嘗試的東西,請使用此代碼。

<?php

if (file_put_contents('/home/project-web/my-own-project/htdocs/my-folder/test.txt', 'Hello World!')) {
   echo 'File Saved Successfully!';
}

如果test.txt存在並說Hello World! 當您從SFTP下載並打開它時,請嘗試以下操作。

在將新內容添加到服務器之后,還需要刷新大多數SFTP客戶端。 因此,請確保您已刷新SFTP客戶端。


<?php

umask(0000); //this sets everything this script interacts with as everyone writable/executable 
//(same as chmod(0777))

$output_path = '/home/project-web/my-own-project/htdocs/my-folder';
$out_file = 'fun.mp4';
$source = file_get_contents('http://data.example.com/videos/fun.mp4');
if (empty($source)) {
  die('No Content Received');
}
if (!@mkdir($output_path, 0777, true) && !is_dir($output_path)){
   die('Unable to create destination directory!');
}
if (file_put_contents($output_path . '/' . $out_file, $source)) {
   echo 'File Saved Successfully!';
}

我在我的網絡服務器上測試了上面的5 MB MP4(特別是http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4下載mp4的第一個google結果),它運行正常。

這將是讓它發揮作用的最后努力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM