現在、私はPHPプログラミングに取り組んでおり、PHP CLを使用するだけでWebページを読み込むことができるので、私がなぜ追加のサーバをインストールする必要があるのか正確にはわかりませんApacheまたはNginxあなたがPHPのドキュメントを参照している場合Apacheなしでphpをサーバとして実行
答えて
質問が投票された理由はわかりません。私はそれを、少し広範ではあるが非常に関連した質問に焦点を当てるための質問と見なします。なぜ、公共のインフラに特定のソフトウェアだけを許可することに非常に注意するべきですか?そして、より一般的には、公共のインフラストラクチャにはどのようなソフトウェアを置くことができますか?その結果、良いサーバーソフトウェアはどのように見えますか?
最初に、安全なソフトウェアのようなものはありません。これは、ネットワーク接続を可能にするために、コンピュータ上の単一のポートを開くものについては、常に懐疑的な見方をしなければならないことを意味します。しかし、おそらく恐ろしく間違ってはならないという確かな最低レベルの保証を保証するのに十分な目玉を持った非常に少数のソフトウェアがあります。 Apacheはそこで最も戦闘的にテストされたサーバであり、Nginxは近代的なWebサーバが関わっている限り、近い将来に登場します。組み込みのPHP HTTPサーバーは、公開されているシステムに適した選択肢ではありません。これは、プロダクションソフトウェアが良いネットワークサーバー設計の品質を欠いており、発見されていないセキュリティ上の脆弱性があるためです。これらの理由やその他の理由から、開発者は組み込みのPHPサーバーの使用に関する警告を表示します。これはユーザーが依頼し続けたために追加されたものですが、それを使用する必要はありません。
また、自分が何をしているのかわからない人が書いたネットワークサーバーを信頼しないこともお勧めします。私はしばしばWebSocketベースのソリューションであるNode or Goで書かれた悪意のあるネットワークサーバを見たり、別のソフトウェアで問題を回避するために使用したりしていました。そうする。誰かが何かできるのは、彼らがすべきことを意味するわけではないし、ネットワークサーバを書くことに関しては、そうしてはならないということだ。頻繁にそれらのサーバはApacheやNginxの背後にプロキシされています。これは標準的な攻撃に対して何らかの防御を提供します。しかし、攻撃者がApacheやNginxの防御を過ぎると、それ自体の防衛機能を提供するのはソフトウェアに任されています。その結果、ホスト上でプロキシされたサービスが実行されていると、Ruby、Node、およびGoの開発者が最大の犯罪者であることを避けられないセキュリティ惨事が起こります。開発者がネットワークサーバーを作成することを決定した瞬間は、非常に具体的な理由がない限り、おそらく間違った戦略を選択した瞬間であり、幅広い攻撃シナリオを意識して防御する必要があります。開発者は、スケーラブルかそうでなければ、ネットワークサーバーを書くという非常に難しい作業を行う前に、さまざまな分野に精通している必要があります。そこにいる開発者は、自分自身やユーザーのインフラストラクチャに大きなセキュリティホールを導入しなくても、実際にそのタスクを実行できる人はほとんどいません。 PHPのコア開発者は一般的に他のところで何をしているのかを知っていますが、私は個人的にコアネットワーキングロジックにいくつかの重大なバグを発見しました。したがって、組み込みのWebサーバーは、まったく使用しないでください。
ApacheとNginxはセキュリティ以外にも、組み込みのPHPサーバーよりも「負荷」を処理するように設計されています。負荷とは、「1秒間に何回のリクエストが処理できるのですか?」という質問に対する答えです。答えは実際には非常に複雑です。コードの複雑さ、ホストされているもの、使用されているハードウェア、実行中のものによっては、1つのホストで毎秒20〜20,000件の要求を処理でき、その数は瞬時に大きく変わる可能性があります。 Apacheには、Webサーバーのパフォーマンスをベンチマークするために使用できるApache Bench(ab)というツールが付属しています。しかし、ベンチマークは常に塩の穀物で取られ、「このアプリケーションをもっと速く動かせるか」の観点から見なければなりません。 「私のアプリケーションはあなたより速い」
PHPでソフトウェアを開発するまでは(SOはプログラミングの質問サイトです)、できるだけ本番環境をミラーリングすることをお勧めします。 Apacheがリモートで実行されている場合、Apacheをローカルで実行することで、現実のシミュレーションを最高に提供し、最後の驚きは一切ありません。 Apacheモジュールで動作するPHPコードは、組み込みのPHPサーバー(たとえば、$ _SERVERの違い)で動作するPHPコードとは大きく異なる動作をすることがあります。
私が好きで、ApacheとPHPの設定が嫌い、Apacheが常時稼働している必要がない場合は、Apache、PHP、Maria DBの移植可能なバージョンを設定するためのスクリプトセットを維持していますWindows用のMySQL)とほぼ同等こっち:
https://github.com/cubiclesoft/portable-apache-maria-db-php-for-windows/
お使いのソフトウェアアプリケーションが実際にビルトインPHPサーバ(例えばAローカルホストサーバのみを使用して実行されることを意図されている場合)、その後、私は非常に導入をお勧めしますCubicleSoft WebServerクラスのようなバッファ層:
https://github.com/cubiclesoft/ultimate-web-scraper/
このようなPHPユーザーランドクラスを使用すると、組み込みのPHPサーバーが提供できない純粋なPHPソリューション(つまり、余分な依存関係はありません):バッファオーバーフローの機会が少なくても、サーバーはZend Engineを介して解釈され、不正なコード実行の機会が少なくなり、サーバー要求/応答サイクルの完全なカスタマイズを含む組み込みサーバーよりも多くの機能を備えます自体。すべてのユーザーが実行するようにポートをオープンしたアプリケーションのコードを信頼しなければならないことを意味することを、もちろん
https://github.com/cubiclesoft/service-manager/
:PHP自体がサービスマネージャに似たツールを利用してOS起動中に、このようなサーバを起動することができます自分のコンピュータにたとえば、ウェブサイトがユーザのウェブブラウザを介してローカルホストポートをスキャンするポートを開始するとどうなりますか?また、ソフトウェアが稼働しているポートが見つかった場合、そのWebサイトからファイルを削除したり、マルウェアをインストールするコードを実行したりできますか?それは本当にあなたを旅行させる珍しい悪用です。デバイスを本当に保護するための唯一の既知の方法は、「ネットワークケーブルの切断/ WiFiの無効化」戦略を備えた「ゼロオープンポート」です。すべてのオープンポートと確立された接続にはリスクが伴います。
優れたネットワーク対応ソフトウェアは、さまざまな攻撃に対してバトルテストと強化が行われています。そのようなソフトウェアを書くことは、権利を得るのに多くの時間がかかる責任であり、それが間違っていれば一般に表示されます。 PHPのビルトイン・サーバは、基本的な設定オプションが不足しています。合理的な目的でその使用を推奨することはできません。
ありがとうverrrrrrrrrrrrrrry、あなたの応答はとても役立ちます –
:このWebサーバーは、アプリケーションの開発を支援するために設計された
はそうです、それは述べて、これはテスト目的のための優れたツールです。サーバーをすばやく起動し、ブラウザでスクリプトをテストすることができます。しかし、それはあなたがApacheやNginxのような実動レベルのサーバーで得られるすべての機能を提供するわけではありません:)警告。 は、テスト目的または制御された環境で実行されるアプリケーションデモ にも役立ちます。フル機能のウェブサーバーであることを意図していません。 パブリックネットワーク上では使用しないでください。
http://php.net/manual/en/features.commandline.webserver.php
あなたのローカル開発環境で組み込みサーバーを使用することができます。しかし、セキュリティの面でより多くの機能を必要とする、より安全で機能豊富なWebサーバーを使用する必要があります。
ありがとうございました:) –
okover私の初めてのstackoverflow :) –
- 1. Apacheと乗客とPHPモジュール、PHPを実行していない
- 2. ApacheサーバでPHPスクリプトが実行されていません
- 3. 新しいApacheサーバでPHPを実行していて、それが動作しない
- 4. Apacheサーバを実行しないでphpspecテストを実行できますか?
- 5. SmartFtpからApacheサーバ経由でphpファイルを実行
- 6. ApacheサーバでPHPからRスクリプトを実行
- 7. OpenBSDのApacheサーバでxincを実行
- 8. ApacheサーバでNodeJSを実行する
- 9. Apacheサーバでフラスコのpythonアプリケーションを実行
- 10. LinuxサーバでPHPを実行
- 11. WAMPサーバのバックグラウンドプロセスとしてphpスクリプトを実行
- 12. ApacheでPHPスクリプトとHTML文書を実行しようとしています
- 13. Apache drillはrdmsサーバでsum agregationを実行します
- 14. PHPを使用して外部サーバでアプリケーションを実行する
- 15. Apacheがphpファイルをインストールして実行しています
- 16. サーバなしでPhantom.jsでジャスミンテストスイートを実行
- 17. Django Apache - ルートとしてスクリプトを実行
- 18. apache cordovaでphpを実行していますか?
- 19. サーバなしでレスポンスウェブパックバンドルを実行
- 20. PHPアプリケーションを中断することなくApacheサーバでBottle.pyを実行できますか?
- 21. 複数のPHPスクリプトをLinux上でApacheサーバを使用して効率的に並列実行する方法
- 22. PHPが別のサーバでPHPを実行して結果を得る
- 23. Apacheサーバの実行は、ほぼ100%
- 24. 私はApacheサーバで実行されているPHPのWebページを持っているPHPのWebページ
- 25. PHP 5.4とPHP 7を同じサーバ上で実行
- 26. PHPを実行可能なウェブサイトとして実行可能
- 27. PhingでPHPサーバを実行する
- 28. PHPサーバでactivex dllを実行する
- 29. LinuxでImagemagick PHPを実行専用サーバ
- 30. lxr perlモジュールをApache 2.4でスクリプトとして実行します。
あなたがいるディレクトリからの 'php -S 127.0.0.1:8000'です。組み込みサーバは開発用であり、ApacheやNginxで見られるような機能はほとんど提供していません。あなたが管理しやすいサーバーを探しているなら、Caddyを見てください。 – Michael
PHPのビルトインサーバを一般公開しているのは、穴を掘ってケーブルを取り付ける代わりに、背の高いはしごを使って手で電源ケーブルを持ち上げるのと同じです。あなたはすぐにテストするためにそれを手に入れることができますが、恒久的に過ごすのは非常に不便です。 – SeinopSys
ok thnakあなたはとても大丈夫です:) –