IIS+php サーバーが画像をアップロードできない solution_PHP チュートリアル
主な目的は、php.ini で Upload_dir_tmp の値が設定されていない場合に、アップロードされたファイルが一時的に保存される場所をテストすることです。このテストの後、php.ini の Upload_dir_tmp の値が設定されていない場合、デフォルトのストレージが使用されることがわかりました。場所は C:windowstemp ディレクトリで、一時ファイルは .tmp 拡張子付きで保存されます。このファイルはすぐに削除されるため、オペレーティング システムのファイル変更検索機能を使用したい場合は、そのファイルが見つからず、見つかりません。 Upload_dir_tmp のデフォルトのパスは次のとおりです。
IIS+phpチュートリアルサーバーが画像をアップロードできない問題の解決策
サーバーはApache2+PHPを使用しており、IIS+PHPに置き換えるとphp.iniの環境変数が読み込めなくなる等の問題が発生します。 phpの認証コードが表示されず、写真をアップロードできないという問題が一部の人から報告されています。
IIS から Apache2 を置き換えるプロセスは、IIS を開いて Apache2 を閉じるだけです。他に変更点はありませんが、PHP をサポートするために IIS にはまだ多くの変更が加えられているようです。
分析:
上記の説明に基づいて、IUSR_MACHINE アカウントにはアップロードの書き込み権限がないため、IIS の権限と以下の権限を変更しました。 NTFS は変更されましたが、結局役に立たず、インターネットで情報を検索しても該当する情報がありませんでした。プロセスは次のとおりです。
swf ファイルはファイルをアップロードするために save.php を呼び出します。 --->swf ファイルはアップロードされたファイルを再アップロードします。名前付け--->save.php に返される名前--->最終的な名前が表示されます。
現在の問題は、swf によるファイルの名前変更でスタックしており、姓が表示されず、swf ファイルがアップロードプロセスに参加していないため、問題は save.php ファイルでのみ見つかります。このファイルはテストされ、最後に表示される名前で使用される変数は fileName であるため、テストのために次のステートメントが挿入されます:
echo "fileName=2008*****.gif";
の関数この文は、fileName に値があり、save.php が正常に表示されることを意味します。最初に元のステートメントを 1 つずつテストし、すべて正常に返されましたが、テストが到達したとき:
if (!@move_uploaded_file($f) ["tmp_name"], $dest_dir .'/'.$fileName)) header("HTTP/1.0 404 Not Found");
この文を言ったときに問題が発生し、コンテキストを検索した後、アップロードできませんでした。 , tmp_nameの変数が見つかりませんでしたが、意味は、ファイルを一時ファイルにアップロードしてから、宛先の場所に移動するということです。ファイルをアップロードできないのは、この場所が書き込み可能ではないためですか?
オンライン情報を検索すると、php.ini の下にアップロード設定が 2 か所あることがわかりました:
file_uploads = On ‐ - アップロード予定 ファイルが保存される一時的な場所
IIS 7 と PHP 5 でファイルのアップロードを設定しようとしています。
「upload_tmp」は機能しません。
最終分析の答え:
上記の内容は 2009 年に書かれたものですが、2010 年 7 月に新しいサーバーを追加し、同時に上記の解決策を再度実行したところ、おそらく問題が発生しました。動作しないため、時間をかけて具体的な原因を調査したところ、次のような問題の理由が見つかりました。
ファイルをアップロードできないことは、すべてのファイルをアップロードできないことを意味するわけではありません。私の Web サイトの 1 つでは、Flash が fwrite() を呼び出してアバターなどを正常に転送しますが、 @move_uploaded_file($f["tmp_name"], $ を呼び出します)このような関数を使用して写真を転送する場合、dest_dir.'/ '.$fileName) をアップロードすることはできません。
分析した結果、その理由は、fwrite() はバイナリ ファイルを転送するのに対し、move_uploaded_file() はテキスト ファイルを転送するためであり、Windows オペレーティング システムはこれら 2 種類のファイルを区別するためです [本書の fwrite() 関数の説明を参照してください。これは、これら 2 つの異なるファイルが PHP 環境にアップロードされるときに保存される一時ディレクトリが異なることを意味します。IIS 環境で PHP を構成する場合、一時ディレクトリは E:tmp に設定されます。ユーザーは書き込み可能で、バイナリファイルのアップロードもできるので、このディレクトリはバイナリファイルアップロード用の一時ファイルの保存場所ではないかと思います。では、move_uploaded_file()で渡されるテキストファイルの一時ファイルの保存場所はどこですか?実際、上記の英語の段落では、upload_tmp_dir で設定されたパスがパスですが、各サーバーのこの設定の値がコメントアウトされているのはなぜですか? , しかし、サーバーによってはアップロードできない場合がありますか?これは、以前に尋ねた質問に戻ります。なぜ Apache2 はアップロードできるのに、iis はアップロードできないのでしょうか?
今回はupload.phpファイルを再度解析し、失敗の原因となったコードを解析しました。 具体的な内容は以下の通りです:
// ファイルがアップロードされているかどうかを確認します
if (! $_FILES['upload'.$ num]['name'] == ""){
If ($_FILES['upload'.$num]['size'] 1. echo "ファイルのアップロード パス: ".$location .$_FILES['upload' .$num]['name'];
2. echo "ファイル一時ファイル名:".$_FILES['upload'.$num]['tmp_name'];
3. move_uploaded_file( $_FILES['upload'. $num]['tmp_name'],$location.$_FILES['upload'.$num]['name']) または $event = "失敗";
} else {
$event = "ファイルが大きすぎます!" ;
}
通常のコードの 2 番目の文は、テストの便宜のために追加しました。その主な目的は、php に upload_dir_tmp の値が設定されていないことをテストすることです。 .ini にアップロードされたファイルは一時的に保存されます。このテストの後、php.ini の Upload_dir_tmp 値が設定されていない場合、デフォルトの保存場所は C:windowstemp ディレクトリにあり、一時ファイルが保存されることがわかりました。 .tmp 接尾辞が付いていると、ファイルはすぐに削除されるため、オペレーティング システムのファイル変更検索機能を使用したい場合は、ファイルが見つからず、upload_dir_tmp のデフォルト パスも見つかりません。
Upload_dir_tmp のデフォルトのパスが見つかったので、c:windowstemp のアクセス許可を変更し、IUSR_ ユーザーが書き込みできるようにし、IIS Admin サービスを再起動し、ファイルをアップロードして、最終的に成功します。私の複数のサーバーのupload_dir_tmp値がすべて空の場合、転送できるものと転送できないものがあるのはこのためです。
。

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
