mtmail.jpとは?メールで全てのブログ投稿も実現できるサービスがあるMovable Typeについて簡単ではございますがまとめたサイトでございます。
PHP: Hypertext Preprocessor(ピー・エイチ・ピー ハイパーテキスト プリプロセッサー)とは、動的にHTMLデータを生成することによって、動的なウェブページを実現することを主な目的としたプログラミング言語、およびその言語処理系である。
PHPはサーバーサイド・スクリプト言語として利用されており、Webサーバ上で動作し、Webサーバ上でPHPスクリプトの文書が要求されるたびに、そのPHPスクリプトが実行され、結果をウェブブラウザに対して送信する。平易な文法のため初心者でも習得しやすく、また大規模な開発にも多く用いられている。多くのフレームワークやライブラリが存在し、開発の手助けとなっている。
数多くのオープンソースウェブアプリケーションに利用されている一方、しばしば脆弱性の報告がなされ、過去に深刻なセキュリティホールが何度か報告されている。
正式名称は「PHP: Hypertext Preprocessor」であるが、一般的には「PHP」と省略して用いられる。このPHPとは、Personal Home Page の頭文字に由来する。
Webアプリケーションのサーバーサイド・スクリプトに専門化している。
C言語やJava言語に似た、平易な文法。
データベースへの容易なアクセス。(組み込み関数、および、標準ライブラリPDOによる。)
クラスベースオブジェクト指向のサポート。
例外処理(try, catch, throw)のサポート。
多くのオープンソースのフレームワークやライブラリが利用可能である。
ASP, JSPと似たHTML埋め込み型の構文をとる。ただし最近のフレームワークを使った開発では、埋め込み型の構文を使用しないことが多い。
様々な付加機能がPEARというオンラインライブラリ集でモジュールとして提供されている。pearコマンドで導入/管理ができる。PerlでいうところのCPANである。
ウィキ構築に用いられるソフトのMediaWiki(Wikipediaで使われている)やPukiwikiを始めとして、数多くのオープンソースウェブアプリケーションに利用されている。
処理系本体は、C言語で書かれている。
PHP4以降、Zend Engineをスクリプト言語を処理するエンジンとして利用している。Zend Engineは、PHP3の開発者によって設立されたZend Technologies Ltd.により開発されたオープンソースのスクリプト言語エンジンである。Zend Engineは1つのプロセスが1つのインタプリタのコンテキストを持つように設計されていて、単独ではマルチスレッドを用いた処理をサポートしていない。
スクリプト実行環境としてのPHPは、Zend Engineに加え、PHPの組み込み関数の実装、Webサーバや標準入出力とスクリプティングエンジンの間を仲介するSAPI (Server API)レイヤ、マルチスレッドで動くWebサーバのモジュールとして利用される場合にグローバル変数のセマンティクスを提供するTSRM (Thread Safe Resource Manager)、プラットフォーム間での入出力機構やAPIの差異を吸収するStreamsレイヤからできている。
しかし、一部の組み込み関数はプラットフォームごとに挙動が違うため、スクリプトによっては移植作業が必要になる場合がある。
PHPをWebサーバで動作させる方法には、実行ファイル形式(CGI / FastCGI)、モジュール形式(mod_php / ISAPI など)がある。どの方法を利用するか(利用できるか)はWebサーバにより異なる。実行ファイル形式によるCGIはほぼ全てのWebサーバに対応しているが、Apacheで動作させる場合はmod_phpとFastCGI、IISで動作させる場合はISAPI、lighttpdで動作させる場合はFastCGIが使用できる。
このほかにも、PHPに標準で実装されているWebサーバ用SAPIは多い。以下に一覧を挙げる。
CGI
AOLserver
Apache HTTP Server (バージョン 1.x 用 / 2.x 用)
Sun Java System Web Server
Roxen WebServer
Tux
ISAPI (Microsoft Internet Information Services等)
Caudium
Continuity
Pi3Web
thttpd
とくに、HTTPリクエストの度にプロセスを起動させないインタフェース(Apacheとmod_phpの組み合わせ、またはFastCGIに対応したWebサーバ(lighthttpdなど)など)での動作が高速である。