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>";
*/
?>
これは、Apacheが「ErrorDocument 500」ディレクティブで使用するように指示されたファイルを見つけることができないことを示すために記録された404です。 –
上記の行を追加して、ファイルアップロードの成功を確認しました。しかし、主要な問題は、ftpファイル転送中のようです。私は衝突チェックを追加しました。エラーを返すかどうかに関わらず、ファイルは少なくとも部分的にリモートサーバーに転送されます。私はどちらかを測定し、異なる経過時間にエラーが発生するため、タイムアウトではありませんが、成功すると、ファイルを転送するのに約2分かかります。 –