PHP の move_uploaded_file 関数が画像の移動に失敗する問題を解決する
問題の説明:
本日、ユーザー登録時にアバター画像ファイルをアップロードするPHPスクリプトを実装する際に問題が発生しました: PHPスクリプトは事前に確認済みです
ブラウザ側ではファイルのアップロードにエラーはありません。
アップロードされたファイルは合法です。
アップロードされるファイルは画像ファイルです。
サーバー側で一意のファイル名が生成されています。
コード
次にやるべきことは、ファイルを一時的な場所から固定の場所に移動することなので、次のスクリプトを書きました:
//ファイルを一時的な場所から固定の場所に移動 @move_uploaded_file($_FILES [$image_fieldname ]['tmp_name'], $upload_filename) または handle_error("Error in storage image file", "Error in move file" . "{$upload_filename}");
コード handle_error() 関数はエラー処理ですmove_uploaded_file関数の実行中にエラーが発生するとエラーページにジャンプします。 まず、エラーが発生していることを確認しました。関数のパラメータにエラーがあるかどうか:
$_FILES[$image_fieldname]['tmp_name']$upload_filename //これは私が自分で組み合わせたファイルパスであり、正しいことが保証されています
PHPマニュアルによると、上記の2つのパラメータは関数に渡されたものは問題がないことが保証されています。何が起こっているのでしょうか? ページではエラーが報告されません (関数の前に PHP の「@」演算子を使用したため、ページではエラーが報告されません)
@operator
注: PHP はコード内で注意して使用してください。 @ 演算子、
@ 演算子を使用すると、無効なユーザー入力や不正な列を含む SQL クエリから発生する可能性のある問題をすべて排除でき、標準以外の URL のエラーも回避できます。つまり、人気のある Web サイトでは、クラッシュしたり停止したりすることができないため、@ 演算子はコードからエラー メッセージをマスクすることができます。ただし、この場合は他の解決策を使用する必要があります。
エラーログファイルを探しています
PHP開発環境を構築する際にxamppを使用していたので、その時は@演算子がエラーメッセージをブロックしていることに気づきませんでした。このような開発キットなので、error_log ファイルはインターネット上のほとんどの記事で述べられているものとは異なります。最終的に、パス
(私のホストは ubuntu)
/opt/lampp/logs の下に php_error_log ファイルが見つかりました。 、Apacheのerror_logファイルも保存されています。php_error_logファイルに、エラーの問題が表示されました:権限が不十分です:画像を保存する宛先ディレクトリには、PHPを実行する権限がありません。スクリプトのコードを書いて画像フォルダーを作成したユーザーは同じユーザーではありません
何はともあれ、問題の原因が見つかりました。これは非常に喜ばしいことです。フォルダーのユーザーとアクセス許可が間違っているため、次の問題を変更するだけで済みます。
フォルダーの権限を 755 に変更します
それでは、Apache を実行しているユーザーは誰でしょうか? PHP スクリプトを使用して次の情報を取得します。
このようにして、スクリプトを実行したユーザーをデーモンとして取得しました。得られるものは、私のものとは異なる可能性があります。
フォルダーを所有するユーザーを変更しましょう:
~/web/hello_php/uploads は画像を保存するターゲット パスです。 -R はこのディレクトリへの再帰を意味します。フォルダーの変更の所有者。
これで作業は完了です。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック







