我遇到了PHP的一些奇怪問題。我有一個PHP腳本,執行文件上傳到我的服務器和他們,將其傳輸到遠程服務器。代碼是正確的,因爲它的工作原理。問題是它並不總是工作。大多數時候,它只是返回一個內部服務器錯誤。我的錯誤日誌只是說它發生了404錯誤,但我沒有做任何「Header」命令。它只是將一些HTML和Javascript與Iframe相呼應。當發生錯誤時,文件在遠程服務器中被切斷,所以我真的不知道錯誤發生在哪裏。我想這是我的服務器上的一些配置錯誤,因爲我已經嘗試了MAMP中的相同腳本,並且它的工作完美無缺。任何人都可以幫助我至少,以獲得它拋出的錯誤,以便我知道從哪裏開始?使用PHP將文件傳輸到另一臺返回「內部服務器錯誤」的服務器
我知道這有點簡單,但我對PHP沒有多少經驗,因爲我和其他語言一樣。
這裏是我的代碼:
<?php
//Uploads a file
$target_path = "uploadedMp3/";
$target_path = $target_path . basename($_FILES['uploadedfile']['name']);
$returnMessage = '';
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path))
{
//FTP the file to VM Link
$ftp_ip = MY_IP;
$ftp_username = MY_USER_NAME;
$ftp_password = MY_PASSWORD;
if($ftp=ftp_connect($ftp_ip,21,3600))
{
if(ftp_login($ftp,$ftp_username,$ftp_password))
{
// Set to PASV mode
ftp_pasv($ftp, 1);
ftp_chdir($ftp,"/mp3/");
// Send the file
//set_time_limit(-1); // PHP won't timeout
//ignore_user_abort(true);
ini_set('upload_max_filesize', '50M');
ini_set('post_max_size', '50M');
$upload = ftp_put($ftp, $_FILES['uploadedfile']['name'],$target_path , FTP_BINARY);
$returnMessage .= "0##The file has been uploaded";
}
else
{
$returnMessage .= "-1##Ocorreu um erro de conexão com o servidor remoto. Entre em contato com a Mobilevel para mais informações.(1)";
}
ftp_close($ftp);
}
else
{
$returnMessage .= "-1##Ocorreu um erro na conexão com o servidor remoto. Entre em contato com a Mobilevel para mais informações.(2)";
}
}
else
{
$returnMessage .= "-1##Ocorreu um erro no Upload, tente novamente. Se o problema persistir entre em contato com a Mobilevel.";
}
unlink($target_path);
echo "<html><head>";
echo "<scr";
echo "ipt type=\"text/javascript\">parent.uploadCallback('" . $returnMessage . "');</scr";
echo "ipt>";
echo "</head><body>";
echo "</body></html>";
/*
echo "<scr";
echo "ipt type=\"text/javascript\">parent.uploadCallback('" . $returnMessage . "');</scr";
echo "ipt></html>";
*/
?>
這只是一個404被記錄,表明Apache無法找到它被告知在'ErrorDocument 500'指令中使用的文件。 –
我添加了上面提到的檢查文件上傳成功的行。但主要問題似乎是在ftp文件傳輸過程中。我也添加了碰撞檢查。返回錯誤或不錯,文件至少部分被轉移到遠程服務器。這並不是超時,因爲我已經測量過,並且錯誤發生在不同的經過時間,但是當它成功時,大約需要2分鐘來傳輸文件。 –