2012-02-20 111 views
0

我想通過php使用ftp細節上傳PHP文件,如下所述。通過php使用ftp細節上傳php文件正在執行php,而不是上傳原始php文件

// retrieve name of the file to be uploaded 
$source_file=$site_url."IMlobby/IMlobby".$_SESSION['zip_name']."/".$filename; 

$fp = @fopen($source_file, 'r'); 

$destination_file=$filename; 
//$upload = ftp_fput($conn_id, $destination_file, $fp, FTP_ASCII); 
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_ASCII); 

// check upload status 
if(!$upload){ 
$errorMSG.="FTP upload has failed!" ; 

這裏的問題是,這些文件包含PHP代碼,應該有遠程服務器上,但得到執行PHP,什麼我得到的遠程服務器上僅僅是HTML。

請幫忙!

+0

你能澄清一下問題所在嗎?如果你上傳'.php'文件,那是故意的,不是嗎?你想知道什麼 - 如何防止PHP文件被執行,或者如何在上傳之前重命名文件? – 2012-02-20 12:05:22

+0

說我正在上傳一個文件test.php,它有這個代碼<?php if($ _ GET ['id'] == 5){echo「Working」; }?>所以,這裏想要的是,我需要在文件中具有相同的PHP代碼。當我通過get方法傳遞id時,它應該可以工作。 只是添加我在我的網站上有一個文件,我上傳到其他遠程服務器。 – Prashant 2012-02-21 04:24:37

回答

0

如果文件在本地託管,請不要通過其URL打開文件。改用其本地路徑。

如果你不知道你的本地路徑是什麼 - 使用$ _SERVER [「DOCUMENT_ROOT」]找出。

0

只是名稱與一個的.phps結尾的文件(或更好,上傳前自動將其重命名)

它,如果你讓它們由服務器執行PHP文件上傳一個嚴重的安全漏洞。您可以讀取服務器上httpd守護進程可讀的所有文件。