PHP $_FILES は、Windows では正常にファイルをアップロードしますが、Ubuntu ではファイルをアップロードできません
次のソース コードは、Windows Apache では正常にファイルをアップロードできますが、Ubuntu Linux ではエラーを報告しませんが、アップロードされたファイルを指定できません。 目次。
解決方法を教えてください。
ありがとうございます!
$ErrorMessage=null;
$Message=null;
if(!empty($_FILES['fileField']['name '])){
if($_FILES['fileField']['error']>0){
$ErrorMessage='エラー: '.$_FILES['fileField']['error'] ;
}else{
if (is_uploaded_file($_FILES['fileField']['tmp_name'])){
//ファイルを移動
move_uploaded_file($_FILES['fileField' ]['tmp_name'],
'/var/www' .'/'.$_FILES['fileField']['name']);
$Message='アップロードに成功しました。 ';
}else{
$ErrorMessage='エラー: '.'アップロードに失敗しました! ';
}
}
}
?>
------解決策------------- - ------
おそらく権限の問題です。アップロード ディレクトリを 777 に変更してテストしてください。
------解決策---------- - ---------
Windows はシングルユーザー オペレーティング システムであり、アクセス許可の問題が発生することはほとんどありません。サーバー上であっても、Microsoft の強力なチームのおかげで、パーミッションの問題は非常にまれです。
Linux はマルチユーザー オペレーティング システムであるため (使用しているのが自分だけであっても)、パーミッションの問題はいたるところで発生します。オープンソース プロジェクトにはまだ技術サポートが弱く、これまでのところシンプルで高速なツールはありません
move_uploaded_file はアップロードされたファイルかどうかを判断します。is_uploaded_file は一度に何度も使用されています
move_uploaded_file は、存在しないディレクトリ、書き込み不可能なディレクトリ、または十分なスペースがないディレクトリを検出すると、エラー ステータス
を返し、何も判断せずに $Message=' アップロードが成功します。 '; は不適切です
-----解決策---------------------------- --
プログラムの先頭に、
ini_set('display_errors','on');
error_reporting(E_ALL);
を追加します。実行後、何が問題なのかはわかります。通常はフォルダーのアクセス許可の問題です。
Linux ターミナルでコマンド
を使用して、フォルダー グループ ユーザーを www-data
chgrp www-data フォルダーに設定できます。
グループ権限を設定します
chmod g rw フォルダー
------解決策------ -----
エラー メッセージを開いて確認してください
-----解決策------ --
'/var/www' .'/'. $_FILES[ 'fileField']['name']
ポスト ディレクトリ ファイルのアクセス許可