| PHP | |
|---|---|
| パラダイム | マルチパラダイム:命令型、関数型、オブジェクト指向、手続き型、リフレクション型 |
| 設計: | ラスムス・ラードルフ |
| 開発者 | PHP開発チーム、 Zend Technologies、 PHP Foundation |
| 初出 | 1995年6月8日[ 1 ] [ 2 ] (1995年6月8日) |
| 安定版リリース | |
| タイピングの規律 | ダイナミック、弱、段階的[ 4 ] |
| 実装言語 | C(主にC++) |
| OS | Unix系、Windows、macOS、IBM i、OpenVMS、IBM Z |
| ライセンス | PHPライセンス[ a ] |
| ファイル名拡張子 | .php、、、、、.phar.phtml.pht.phps |
| ウェブサイト | php.net |
| 主な実装 | |
| Zend Engine、HHVM、PeachPie、Quercus、Parrot | |
| 影響を受けたもの | |
| Perl、C、C++、Java、[ 6 ] 、 Tcl、[ 2 ]、 JavaScript [ 7 ] | |
| 影響を受けた | |
| Hack、JSP、ASP、React JS | |
| |
PHPは、 Web開発向けの汎用スクリプト言語です。[ 8 ] 1993年にデンマーク系カナダ人のプログラマー、ラスムス・ラードルフによって作成され、1995年にリリースされました。 [ 9 ] [ 10 ] PHPのリファレンス実装は現在、PHPグループによって作成されています。[ 11 ] PHPはもともとPersonal Home Pageの略語でしたが、[ 12 ] [ 13 ]現在では再帰的な頭字語であるPHP: Hypertext Preprocessorを表しています。[ 14 ]
PHP コードは通常、モジュール、デーモン、またはCommon Gateway Interface (CGI) 実行可能ファイルとして実装されたPHPインタープリタによってWeb サーバー上で処理されます。Web サーバーでは、解釈および実行された PHP コードの結果 (生成されたHTMLやバイナリ画像データなど、任意のタイプのデータ) が、 HTTP応答の全体または一部を形成できます。さまざまなWeb テンプレート システム、Webコンテンツ管理システム、およびWeb フレームワークが存在し、それらを使用して、その応答の生成を調整または容易にすることができます。さらに、PHP は Web コンテキストの外部のプログラミング タスクにも使用できますが、Web 以外の用途での使用はまれです。PHP コードは、コマンド ラインから直接実行することもできます。
Zend Engineを搭載した標準PHPインタープリタは、 PHPライセンスの下でリリースされたフリーソフトウェアです。PHPは広く移植されており、様々なオペレーティングシステムやプラットフォーム上のほとんどのウェブサーバーに導入できます。[ 15 ]
歴史
PHP言語は当初、正式な仕様や標準が文書化されることなく発展し、オリジナルの実装が事実上の標準として機能し、他の実装はそれに追随することを目指しました
初期の歴史(1993年から1997年)
PHPの開発は1993年[ 9 ]に始まり、ラスマス・ラードルフがC言語でCommon Gateway Interface(CGI)プログラムをいくつか作成しました[ 16 ] [ 17 ] 。彼はこれらのプログラムを用いて個人ホームページを管理していました。彼はこれらのプログラムをHTMLフォームに対応させ、データベースと通信できるように拡張し、この実装を「Personal Home Page/Forms Interpreter」(PHP/FI)と名付けました。
<!--include /text/header.html--><!--getenv HTTP_USER_AGENT--> <!--if substr $exec_result Mozilla--> こんにちは、Netscapeをお使いですね!< p > <!--endif--><!--sql database select * from table where user='$username'--> <!--ifless $numentries 1--> 申し訳ございませんが、そのレコードは存在しません< p > <!--endif exit--> ようこそ<!--$user--> ! < p >アカウントに は<!--$index:0-->クレジットが残っています。 < p ><!--include /text/footer.html-->PHP/FIは、シンプルで動的なWebアプリケーションを構築するために使用できます。バグ報告を迅速化し、コードを改善するために、ラードルフは1995年6月8日にUsenetディスカッショングループcomp.infosystems.www.authoring.cgiで、PHP/FIのリリースを「Personal Home Page Tools (PHP Tools) version 1.0」として最初に発表しました。 [ 1 ] [ 19 ]このリリースには、Perlのような変数、フォーム処理、 HTMLの埋め込み機能などの基本機能が含まれていました。この時点で、構文はPerlに似たものに変更されていましたが、より単純で制限が多く、一貫性も低くなっていました。[ 12 ] [ 11 ]
初期のPHPは、新しいプログラミング言語として意図されたものではなく、むしろ有機的に成長していきました。ラードルフは当時を振り返ってこう述べています。「PHPの成長を止める術はありません。[...] プログラミング言語を書くつもりは全くありませんでした。[...] プログラミング言語の書き方は全く分かりません。[...] ただ、論理的に次の段階を着実に追いかけていっただけです。」[ 20 ]開発チームが結成され、数ヶ月にわたる作業とベータテストを経て、1997年11月にPHP/FI 2が正式にリリースされました。[ 21 ]
PHPは元々設計されたものではなく、有機的に開発されたため、関数の命名やパラメータの順序に一貫性がありませんでした。[ 22 ]関数名はPHPが「ラップ」している低レベルライブラリに合わせて選ばれることもありました。[ 23 ]また、PHPの初期のいくつかのバージョンでは、関数名の長さがハッシュ関数として内部的に使用されていたため、ハッシュ値の分散を改善するために名前が選ばれました。[ 24 ]
PHP 3 および 4 (1998 年から 2004 年)
1997年にZeev SuraskiとAndi Gutmansはパーサーを書き直してPHP 3の基礎を築き、言語名を再帰的な頭字語PHP: Hypertext Preprocessorに変更した。[ 11 ] [ 25 ]その後、PHP 3の公開テストが開始され、1998年6月に正式リリースされた。SuraskiとGutmansはPHPのコア部分の書き直しを開始し、1999年にZend Engineを開発した。 [ 26 ]彼らはまた、イスラエルのラマトガンにZend Technologiesを設立した。[ 11 ]
2000年5月22日、Zend Engine 1.0を搭載したPHP 4.0がリリースされました。[ 11 ] 2008年8月までに、このブランチはバージョン4.4.9に達しました。PHP 4は現在開発が終了しており、セキュリティアップデートのリリースも予定されていません。[ 27 ] [ 28 ]
初期の PHP 5 (2004 年から 2006 年)
2004年7月1日、新しいZend Engine 2.0を搭載したPHP 5.0がリリースされました。[ 11 ] PHP 5.0では言語に大きな変更が加えられ、特にオブジェクト指向プログラミングへのアプローチの見直し、イテレータと例外が導入されました。[ 29 ]
PHP 5.1 と PHP 5.2 は翌年にリリースされ、PHP Data Objects (PDO) 拡張機能 (データベースにアクセスするための軽量で一貫性のあるインターフェイスを定義する) などの小さな改善と新機能が追加されました。2008 年には、PHP 5.x が開発中の唯一の安定したバージョンになりました。
多くの著名なオープンソースプロジェクトは、PHP 4からPHP 5への移行を推進するPHP開発者のコンソーシアムによって提供されたGoPHP5イニシアチブ[ 30 ]により、2008年2月5日から新しいコードでPHP 4のサポートを停止しました。[ 31 ] [ 32 ]
PHP 6とUnicode
PHPのネイティブ文字列関数は生のバイト列に対してのみ動作し、マルチバイト文字エンコーディングでの使用は困難でした。[ 33 ] [ 34 ] 2005年に、Andrei Zmievskiが率いるプロジェクトが開始され、PHP全体にネイティブUnicodeサポートが導入されました。これは、 International Components for Unicode (ICU)ライブラリを埋め込み、テキスト文字列を内部的にUTF-16として表現することでした。[ 35 ]これにより、言語内部とユーザーコードの両方に大きな変更が生じるため、当時開発中だった他の主要な機能とともに、これを言語バージョン6.0としてリリースすることが計画されました。[ 36 ]
しかし、必要な変更を理解している開発者が不足していることと、ウェブのコンテキストではほとんど使用されない UTF-16 との間の変換によって生じるパフォーマンスの問題により、プロジェクトは遅延しました。[ 37 ]その結果、2009年に PHP 5.3 リリースが作成され、2010年3月に現在の形式のプロジェクトは正式に放棄され、PHP 6 から残っている非 Unicode 機能のほとんどを含む PHP 5.4 リリースが準備されました。[ 38 ]当初は Unicode 統合のための新しい計画が形成されることを期待していましたが、2014年までに何も採用されませんでした。
PHP 5 以降 (2009 年から 2014 年)
PHP 5.3は、もともと6.0の一部となることを意図していた機能を含んでいたため、名前空間、クロージャ、遅延静的バインディングのサポートが追加され、[ 39 ] [ 40 ]、標準関数に対する多くの修正と改善が行われた重要なリリースでした。
Unicodeブランチが正式に廃止されたことに伴い、2011年に新しいリリースプロセスが採用され、年間リリースサイクルが計画され、「機能リリース」(xyzからx.y+1.z)と「メジャーリリース」(xyzからx+1.0.0)が明確に区別されました。[ 41 ] 6.0リリースに予定されていた残りの機能は、トレイトサポートや新しい「短い配列構文」など、2012年3月にリリースされたPHP 5.4に含まれていました。その後、PHP 5.5(2013年6月)と5.6(2014年8月)でさらに段階的な変更が行われました。
PHPバージョン5.3および5.4では、Microsoft Windowsバイナリ配布版は32ビット版IA-32ビルドのみであり、[ 42 ] [ 43 ] 、64ビット版Windowsプラットフォームでインターネットインフォメーションサービス(IIS)を使用するにはWindows 32ビット互換モードが必要でした。PHPバージョン5.5では、Microsoft Windowsで64ビット版x86-64ビルドが利用可能になりました。[ 44 ]
PHP 5.6の公式セキュリティサポートは2018年12月31日に終了しました。[ 45 ]
PHP 7.x (2015年から2019年)
2014年から2015年にかけて、PHPの新しいメジャーバージョンであるPHP 7.0が開発されました。このバージョンの番号付けについては、社内開発者の間で議論がありました。[ 46 ] PHP 6のUnicode実験はまだリリースされていませんでしたが、いくつかの記事や書籍のタイトルでPHP 6の名前が参照されており、新しいリリースでその名前を再利用すると混乱が生じる可能性がありました。[ 47 ]投票の結果、PHP 7という名前が選ばれました。[ 48 ]
PHP 7.0の基礎は、当初PHP次世代(phpng )と呼ばれていたPHPブランチでした。これはDmitry Stogov、Xinchen Hui、Nikita Popovによって書かれ、[ 49 ] Zend EngineをリファクタリングすることでPHPのパフォーマンスを最適化することを目指し、ほぼ完全な言語互換性を維持しました。[ 50 ] 2014年7月14日までに、 phpngプロジェクトのメインベンチマークスイートとして機能したWordPressベースのベンチマークは、ほぼ100%のパフォーマンス向上を示しました。phpngからの変更は、よりコンパクトなデータ構造などの変更がジャストインタイム( JIT)コンパイラへの移行に適していると考えられるため、将来のバージョンでのパフォーマンス向上を容易にします。[ 51 ]大幅な変更があったため、改良されたZend Engineは、PHP 5.xで使用されていたZend Engine 2の後継として、Zend Engine 3と呼ばれました。[ 52 ]
PHP 7.0には、2011年に合意されたバージョン管理方式で「メジャーバージョン」に許可されている下位互換性のない変更も含まれていました。 [ 41 ]コア言語の変更には、変数の逆参照のより一貫した処理、[ 53 ]foreachステートメントのより予測可能な動作、[ 54 ]ビットシフトのプラットフォーム一貫性[ 55 ]および浮動小数点から整数への変換が含まれていました。[ 55 ] [ 56 ]メンテナンスされていない、または非推奨のサーバーアプリケーションプログラミングインターフェース(SAPI)と拡張機能がPHPコアから削除されました。最も顕著なのはレガシーmysql拡張機能です。[ 57 ]<% ASPスタイルの区切り文字や%>などの他のレガシー機能も削除されました<script language="php"> ... </script>。[ 58 ]
PHP 7.0は、PHPの型システムの拡張の始まりとなりました。PHP 5.xでは関数のパラメータのみに型宣言が可能でしたが、7.0では関数の戻り値に拡張されました。[ 59 ]また、7.4ではオブジェクトのプロパティにも拡張されました。 [ 60 ]表現可能な型も拡張され、7.0ではスカラー型(整数、浮動小数点数、文字列、ブール値)が、 [ 61 ]iterable型、[ 62 ] null許容型、[ 63 ]戻りvoid値型[ 64 ]はすべて7.1で、 7.2では型が[ 65 ]objectになりました。
この時期の他の変更は、言語の表現力を高めることを目的としており、7.0では??( null合体) [ 66 ] や<=>「宇宙船」3者間比較[ 67 ]演算子、PHP 7.1では配列の逆参照[ 68 ]や複数の例外タイプのキャッチ[ 69 ]のための新しい構文、7.3ではより柔軟なヒアドキュメントとナウドキュメント構文[ 70 ]、7.4ではヌル合体代入演算子[ 71 ]が導入されました。
PHP 8.x (2020年以降)
PHP 8.0は、以前のバージョンから大幅な変更が加えられたメジャーバージョンとして、2020年11月26日にリリースされました。 [ 72 ] [ 73 ]
最も注目を集めた変更点の1つは、 JITコンパイラの追加です。これにより、いくつかのユースケースで大幅なパフォーマンスの向上が期待できます。[ 74 ] [ 75 ]一般的なウェブ開発のユースケースよりも、数学的な操作で大幅な改善が期待できます。[ 76 ]さらに、JITコンパイラのパフォーマンス上の利点により、一部のコードをCからPHPに移行する可能性が生まれます。[ 77 ]
8.0で言語に追加された重要な機能は属性で、クラス、メソッド、パラメータなどのプログラム要素にメタデータを追加することができます。[ 72 ]その後のバージョンでは、言語の動作を変更する組み込み属性が追加されました。たとえば、PHP 8.2の属性、[ 78 ] PHP 8.3の属性、[ 79 ] PHP 8.4の属性、[ 80 ] PHP 8.5の属性と属性などです。 [ 81 ] [ 82 ] [ 83 ]#[\SensitiveParameter]#[\Override]#[\Deprecated]#[\NoDiscard]#[\DelayedTargetValidation]
言語の型システムの重要な拡張は、複合型の追加です。PHP 8.0 の共用体型(例:「整数または文字列」を意味する)、[ 84 ] PHP 8.1 の交差型(例:「値は との両方のインターフェースを実装する必要がある」を意味する)、[ 85 ] PHP 8.2 の選言正規形(DNF)型( などの交差の共用体)[ 86 ]追加の特殊型キーワードが追加されました。PHP 8.0 の および、[ 72 ] PHP 8.1 の(関数が決して返さないことを示すボトム型) [ 87 ] PHP 8.2 では、、、 がスタンドアロン型として追加されました。[ 88 ] [ 89 ]int|stringTraversable&CountableTraversableCountablearray|(Traversable&Countable)mixedstaticnevernullfalsetrue
豊富な型システムの追加は、より厳密な言語への一般的な傾向の一部であり、PHP 8.0では、文字列と数値の比較、[ 90 ]、数値文字列、[ 91 ] 、および互換性のないメソッドシグネチャ[ 92 ]の処理に重大な変更が含まれていました。それ以降のバージョンでは、将来のメジャーバージョンで重大な変更として計画されている動作、たとえばnullnull可能でない内部関数パラメータへの渡し[ 93 ]や、クラスで宣言されていないプロパティの参照[ 94 ]などについて、非推奨の通知が導入されました。
リリース履歴
| バージョン | リリース日 | [ 95 ]までサポート | 注記 |
|---|---|---|---|
| サポート対象外: 1.0 | 1995年6月8日 | 正式名称は「Personal Home Page Tools (PHP Tools)」。これが「PHP」という名称の初使用である。[ 11 ] | |
| サポート対象外: 2.0 | 1997年11月1日 | 正式名称は「PHP/FI 2.0」。PHPと呼べる最初のリリースであり、今日まで受け継がれている多くの機能を備えたスタンドアロン言語です | |
| サポート対象外: 3.0 | 1998年6月6日 | 2000年10月20日[ 95 ] | 開発は1人から複数の開発者へと移行しました。Zeev SuraskiとAndi Gutmansがこのバージョンのベースを書き直しました。[ 11 ] |
| サポート対象外: 4.0 | 2000年5月22日[ 96 ] | 2001年6月23日[ 95 ] | Zend Engineと呼ばれる、より高度な2段階解析/実行タグ解析システムを追加しました。[ 97 ] |
| サポート対象外: 4.1 | 2001年12月10日[ 98 ] | 2002年3月12日[ 95 ] | 「スーパーグローバル」の導入(、、$_GETなど)[ 97 ]$_POST$_SESSION |
| サポート対象外: 4.2 | 2002年4月22日[ 99 ] | 2002年9月6日[ 95 ] | デフォルトでは無効になっていますregister_globals。ネットワーク経由で受信したデータはグローバル名前空間に直接挿入されなくなり、アプリケーションのセキュリティホールの可能性が排除されます。[ 97 ] |
| サポート対象外: 4.3 | 2002年12月27日[ 100 ] | 2005年3月31日[ 95 ] | CGIを補完するためにコマンドラインインターフェース(CLI)を導入した。 [ 97 ] [ 101 ] |
| サポート対象外: 4.4 | 2005年7月11日[ 102 ] | 2008年8月7日[ 95 ] | PHPバージョン4.3.xでコンパイルされた拡張機能とのバイナリ互換性を壊す必要があったメモリ破損のバグを修正しました。[ 103 ] |
| サポート対象外: 5.0 | 2004年7月13日[ 104 ] | 2005年9月5日[ 95 ] | 新しいオブジェクトモデルを備えたZend Engine II。[ 105 ] |
| サポート対象外: 5.1 | 2005年11月24日[ 106 ] | 2006年8月24日[ 95 ] | 再設計されたPHPエンジンにおけるコンパイラ変数の導入によるパフォーマンスの向上。[ 105 ]データベースにアクセスするための一貫したインターフェースとしてPHPデータオブジェクト(PDO)を追加しました。[ 107 ] |
| サポート対象外: 5.2 | 2006年11月2日[ 108 ] | 2011年1月6日[ 95 ] | フィルター拡張機能をデフォルトで有効化。ネイティブJSONサポート。[ 105 ] |
| サポート対象外: 5.3 | 2009年6月30日[ 109 ] | 2014年8月14日[ 95 ] | 名前空間のサポート、遅延静的バインディング、ジャンプ ラベル (制限付きgoto )、匿名関数、クロージャ、PHP アーカイブ (phar)、循環参照のガベージ コレクション、改善されたWindowsサポート、sqlite3、 MySQLで動作する拡張機能の基礎となるライブラリとしての libmysql の代替としての mysqlnd 、より優れたMIMEサポートのための mime_magic の代替としての fileinfo 、国際化拡張機能、および ereg 拡張機能の廃止。 |
| サポート対象外: 5.4 | 2012年3月1日[ 110 ] | 2015年9月3日[ 95 ] | 特性のサポート、短い配列構文のサポート。削除された項目: 、、、、、register_globals。組み込みのWebサーバー。[ 111 ]機能とパフォーマンスの改善、メモリ要件の削減 safe_mode。allow_call_time_pass_referencesession_register()session_unregister()session_is_registered() |
| サポート対象外: 5.5 | 2013年6月20日[ 112 ] | 2016年7月10日[ 113 ] | ジェネレータ、finally例外処理ブロック、OpCache(Zend Optimizer+ベース)のサポートが公式ディストリビューションにバンドルされています。 [ 114 ] |
| サポート対象外: 5.6 | 2014年8月28日[ 115 ] | 2018年12月31日[ 113 ] | 定数スカラー式、可変個引数関数、引数の展開、新しい指数演算子、use関数と定数のステートメントの拡張、SAPIモジュールとしての新しいphpdbgデバッガ、その他の小さな改善。[ 116 ] |
| 6.x | 未リリース | 該当なし | ネイティブUnicodeサポートを含める予定だったPHPの廃止されたバージョン。[ 117 ] [ 118 ] |
| サポート対象外: 7.0 | 2015年12月3日[ 119 ] | 2019年1月10日[ 41 ] | Zend Engine 3(パフォーマンスの向上[ 51 ]とWindowsでの64ビット整数のサポート[ 120 ])、統一された変数構文、[ 53 ] ASTベースのコンパイルプロセス、[ 121 ]の追加、[ 122 ]プラットフォーム間でのビット単位のシフトの一貫性、[ 123 ](ヌル合体)演算子、[ 66 ] Unicodeコードポイントエスケープ構文、[ 124 ]戻り値の型宣言、[ 59 ]スカラー型(整数、浮動小数点数、文字列、ブール値)宣言、[ 61 ]「宇宙船」3者間比較演算子、[ 67 ]ジェネレータの委譲、[ 125 ]匿名クラス、[ 126 ]よりシンプルで一貫性のあるCSPRNG API、[ 127 ]多くのPHP内部「エラー」をより現代的な例外に置き換え、[ 128 ]複数のアイテムをインポートするためのショートカット構文名前空間。[ 129 ]Closure::call()??<=> |
| サポート対象外: 7.1 | 2016年12月1日 | 2019年12月1日[ 113 ] | iterable型、[ 62 ] null許容型、[ 63 ]void戻り値の型、[ 64 ]クラス定数の可視性修飾子、[ 130 ]短いリスト構文、[ 68 ]多重キャッチ[ 69 ] |
| サポート対象外: 7.2 | 2017年11月30日 | 2020年11月30日[ 113 ] | objectパラメータと戻り値の型の宣言、[ 65 ] libsodium拡張、[ 131 ]抽象メソッドのオーバーライド、[ 132 ]パラメータの型の拡張[ 133 ] |
| サポート対象外: 7.3 | 2018年12月6日[ 134 ] | 2021年12月6日 | 柔軟なHeredocとNowdoc構文、[ 70 ]参照代入と配列分解のサポート、[ 135 ] PCRE2サポート、[ 136 ]関数[ 137 ]list()hrtime |
| サポート対象外: 7.4 | 2019年11月28日[ 138 ] | 2022年11月28日 | 型付きプロパティ、[ 60 ]プリロード、[ 139 ] null合体代入演算子、[ 71 ]改善openssl_random_pseudo_bytes、[ 140 ]弱参照、[ 141 ]外部関数インターフェース(FFI)、[ 142 ]常に利用可能なハッシュ拡張、[ 143 ]パスワードハッシュレジストリ、[ 144 ]マルチバイト文字列分割、[ 145 ]参照のリフレクション、[ 146 ] ext/wddxのアンバンドル、[ 147 ]新しいカスタムオブジェクトシリアル化メカニズム[ 148 ] |
| サポート対象外: 8.0 | 2020年11月26日[ 149 ] | 2023年11月26日 | ジャストインタイム(JIT)コンパイル、[ 150 ]負のインデックスで始まる配列、[ 151 ]より厳密で健全な言語セマンティクス(抽象特性メソッドの検証)、[ 152 ]より健全な文字列と数値の比較、[ 90 ]より健全な数値文字列、[ 91 ]TypeError無効な算術演算子/ビット演算子について、[ 153 ]さまざまなエンジンエラーの再分類、[ 154 ]内部関数の一貫性のある型エラー、[ 155 ]互換性のないメソッドシグネチャの致命的なエラー、[ 92 ]ロケールに依存しない浮動小数点から文字列への変換、[ 156 ]変数構文の調整、[ 157 ]属性、[ 158 ] [ 159 ] [ 160 ] [ 161 ]名前付き引数、[ 162 ]一致式、[ 163 ]コンストラクタプロパティの昇格、[ 164 ]共用体型、[ 84 ]mixed型、[ 165 ]静的戻り値型、[ 166 ] nullsafe演算子、[ 167 ]非キャプチャキャッチ、[ 168 ]throw式、[ 169 ] JSON拡張は常に利用可能です。[ 170 ] |
| サポート対象外: 8.1 | 2021年11月25日[ 171 ] | 2025年12月31日 | 明示的な8進整数リテラル表記、[ 172 ]列挙型、[ 173 ]読み取り専用プロパティ、[ 174 ]第一級呼び出し可能構文、[ 175 ]new初期化子内、[ 176 ]純粋交差型、[ 85 ]never戻り値の型、[ 87 ]finalクラス制約、[ 177 ]ファイバー[ 178 ] |
| サポート対象:8.2 | 2022年12月8日[ 179 ] | 2026年12月31日 | 読み取り専用クラス、[ 180 ]null、、スタンドアロン型としてのfalse[ 88 ] [ 89 ]ロケールに依存しない大文字小文字の変換、[ 181 ]選言正規形型、[ 86 ]特性内の定数[ 182 ]true |
| サポート対象: 8.3 | 2023年11月23日[ 183 ] | 2027年12月31日 | 型付きクラス定数、[ 184 ]動的クラス定数フェッチ、[ 185 ] 属性、[ 79 ]読み取り専用プロパティのディープクローン、[ 186 ]新しい関数、[ 187 ]ランダマイザーの追加、[ 188 ]コマンドラインリンターが複数のファイルをサポート #[\Override]json_validate |
| サポート対象: 8.4 | 2024年11月21日[ 189 ] | 2028年12月31日 | プロパティ フック、非対称の可視性、更新されたDOM API、パフォーマンスの向上、バグ修正、および一般的なクリーンアップ。 |
| 最新バージョン:8.5 | 2025年11月20日[ 190 ] | 2029年12月31日 | パイプオペレーター|>[ 191 ] |
凡例: サポート対象外 サポート対象 最新バージョン プレビュー版 将来版 | |||
2011年6月28日より、PHP開発チームはPHPの新バージョンのリリースタイムラインを導入しました。[ 41 ]このシステムでは、少なくとも毎月1つのリリースを実施する必要があります。年に1回、新機能を含むマイナーリリースを実施する必要があります。すべてのマイナーリリースは、セキュリティとバグ修正を含む少なくとも2年間のサポートを受け、その後少なくとも1年間はセキュリティ修正のみを実施します。つまり、すべてのマイナーリリースは合計3年間のリリースプロセスとなります。3年間のリリースプロセス中は、小さく自己完結的な機能を除き、マイナーリリースに新機能を導入することはできません。2024年のRFCでは、セキュリティ修正のみの期間が2年に延長され、すべてのサポート終了日が12月31日に固定され、「小さく自己完結的な」機能をパッチバージョンに導入することを許可する例外が削除されました。[ 192 ]
古いバージョンの蔓延
W3Techsは、2025年11月現在(PHP 7が廃止されてから約3年後、PHP 8.3がリリースされてから23か月後)、PHP 7などのサポートされていないバージョンが、PHPウェブサイトの半分以上でまだ使用されており、古くて安全でないことがわかっていると報告しています。[ 193 ] [ 194 ]これには、20年以上前にリリースされた、さらに古く(7年前に廃止された)安全でないPHP 5を使用しているPHPウェブサイトの9.7%が含まれていました。
マスコット

PHPプロジェクトのマスコットは、 PHPのロゴが横に付いた青い象のelePHPantです。 1998年にVincent Pontier [ 195 ]によってデザインされました。 [ 196 ]「(PHPの)文字は横から見ると象の形をしています。」[ 197 ]
elePHPantはぬいぐるみの形態では色が異なる場合があります。[ 198 ]このマスコットは長年にわたり様々なバリエーションが作られてきました。コミュニティでは、Vincent Pontierによるオリジナルデザインに基づいたelePHPantのみが公式とみなされています。[ 199 ]これらはコレクター向けであり、中には非常に希少なものも存在します。[ 200 ]
構文

次の「Hello, World!」プログラムは、 HTMLドキュメントに埋め込まれた PHP コードで記述されています。
<!DOCTYPE html> < html > < head > < title > PHP "Hello, World!" プログラム</ title > </ head > < body > < p > <? = 'Hello, World!' ?> </ p > </ body > </ html >PHPインタプリタは、区切り文字で囲まれたPHPコードのみを実行します。区切り文字の外側にあるものはPHPでは処理されませんが、PHP以外のテキストはPHPコードに記述された制御構造の影響を受ける可能性があります。最も一般的な区切り文字は、 PHPセクションの<?php開始と?>終了に使用されます。短縮形<?も存在します。この短い区切り文字を使用すると、ローカルのPHP設定でサポートが無効にされる可能性があるため、スクリプトファイルの移植性が低下し、推奨されません。[ 201 ] [ 202 ]逆に、短いechoタグを使用しないという推奨事項はありません<?=。[ 203 ] PHP 5.4.0より前では、この短い構文は設定が有効になっている場合にechoのみ機能しますshort_open_tagが、PHP 5.4.0以降では常に使用できます。[ 204 ] [ 205 ] [ 201 ]これらの区切り文字の目的は、PHPコードをJavaScriptコードやHTMLマークアップなどのPHP以外のコンテンツから分離することです。[ 206 ]
XHTMLやその他のXML文書における最初の形式の区切り文字<?phpと<code>は、正しく形成されたXML処理命令を作成します。 [ 207 ]つまり、サーバー側ファイル内のPHPコードとその他のマークアップの組み合わせは、それ自体が整形式のXMLになります。 ?>
変数にはドル記号が先頭に付き、事前に型を指定する必要はありません。PHP 5では型宣言が導入され、関数の引数を特定のクラスのオブジェクト、配列、インターフェース、またはコールバック関数に強制できるようになりました。ただし、PHP 7より前では、整数や文字列などのスカラー型では型宣言を使用できませんでした。[ 61 ]
以下は、PHP 変数を宣言して初期化する方法の例です。
<?php $name = 'John' ; // 文字列型の変数を宣言および初期化中$age = 18 ; // 整数型の変数を宣言および初期化中$height = 5.3 ; // double 型の変数を宣言および初期化中echo $name . ' is ' . $height . "m tall \n " ; // 変数と文字列を連結中echo " $name is $age years old." ; // 変数を文字列に挿入中?>関数名やクラス名とは異なり、変数名は大文字と小文字が区別されます。二重引用符("")で囲まれた文字列とヒアドキュメント文字列はどちらも、変数の値を文字列に挿入する機能を提供します。[ 208 ] PHPは自由形式言語と同様に改行を空白文字として扱い、文はセミコロンで終了します。[ 209 ] PHPには3種類のコメント構文があります。ブロックコメントとインラインコメントを示します。またはは1行コメントに使用されます。[ 210 ]文は、PHPがテキスト出力に提供するいくつかの機能の1つです。 /* *///#echo
キーワードと言語構文の点では、PHP は C スタイルの構文に似ています。if条件、forループwhile、関数の戻り値は、C、C++、C#、Java、Perl などの言語の構文に似ています。
データ型
PHPは緩い型付けです。整数はプラットフォーム依存の範囲で、C言語のlong型に相当する32ビット、64ビット、または128ビットの符号付き整数として格納されます。符号なし整数は特定の状況で符号付き値に変換されますが、これは他の多くのプログラミング言語とは異なる動作です。[ 211 ]整数変数は、10進数(正と負)、 8進数、16進数、および2進数表記を使用して代入できます。 [ 212 ]
浮動小数点数もプラットフォーム固有の範囲に格納されます。浮動小数点表記法、または2種類の科学的記法を使用して指定できます。[ 213 ] PHPには、 JavaやC++のネイティブブール型に類似したネイティブブール型があります。ブール型の変換規則を使用すると、 PerlやC++と同様に、ゼロ以外の値はtrue、ゼロはfalseとして解釈されます。[ 213 ]
NULLデータ型は値を持たない変数を表します。NULLこのデータ型で許可される唯一の値です。[ 213 ]
「リソース」型の変数は、外部ソースからのリソースへの参照を表します。これらは通常、特定の拡張機能の関数によって作成され、同じ拡張機能の関数によってのみ処理されます。例としては、ファイル、画像、データベースリソースなどが挙げられます。[ 213 ]
配列には、リソース、オブジェクト、さらには他の配列など、PHPが扱えるあらゆる型の要素を含めることができます。値のリストや、キーと値の両方を持つハッシュでは順序が保持され、これらを混在させることもできます。[ 213 ] PHPは文字列もサポートしており、一重引用符、二重引用符、nowdoc、またはheredoc構文で使用できます。[ 214 ]
標準PHPライブラリ(SPL)は標準的な問題を解決し、効率的なデータアクセスインターフェースとクラスを実装します。[ 215 ]
関数
PHPはコア言語で多数の関数を定義しており、その多くは様々な拡張機能でも利用可能です。これらの関数はオンラインのPHPドキュメントで十分に説明されています。[ 216 ]ただし、組み込みライブラリには、上記の 履歴で説明したように、さまざまな命名規則とそれに伴う不整合があります
カスタム関数は開発者によって定義できます。
function myAge ( int $birthYear ) : string { // 現在の年から誕生年を引いて年齢を計算します。$yearsOld = date ( 'Y' ) - $birthYear ;// 年齢を説明的な文字列で返します。return $yearsOld . ( $yearsOld == 1 ? ' year' : ' years' ); }echo '私は現在 ' . myAge ( 1995 ) . ' 歳です。' ;2026 年現在、上記のサンプル プログラムの出力は「私は現在 31 歳です。」となります。
PHP では、関数ポインタの代わりに、関数名を含む文字列で関数を参照することができます。この方法では、通常の PHP 関数を、たとえばコールバックとして、または関数テーブル内で使用できます。[ 217 ]ユーザー定義関数は、プロトタイプ化せずにいつでも作成できます。[ 216 ] [ 217 ]関数はコードブロック内で定義できるため、関数を定義するかどうかを実行時に決定function_existsできます。指定された名前の関数がすでに定義されているかどうかを判断する関数があります。関数呼び出しは括弧を使用する必要があります。ただし、PHP 演算子を使用して呼び出される引数のないクラスコンストラクターnew関数は例外で、この場合は括弧はオプションです。
PHP 4.0.1以降create_function()、 の薄いラッパーによってeval()、プログラム実行中に通常のPHP関数を作成できるようになりました。これはPHP 7.2で非推奨となり、PHP 8.0 [ 218 ]では削除されました。代わりに、PHP 5.3で追加された、周囲のスコープから変数をキャプチャできる匿名関数または「クロージャ」[ 219 ]の構文が採用されました。短縮形の矢印構文はPHP 7.4で追加されました。[ 220 ]
関数getAdder ( $x ) { return fn ( $y ) => $x + $y ; }$adder = getAdder ( 8 ); echo $adder ( 2 ); // "10" と出力します上記の例では、getAdder()関数は渡された引数を用いてクロージャを作成し$x、追加の引数を受け取り$y、作成されたクロージャを呼び出し元に返します。このような関数はファーストクラスオブジェクトであり、変数に格納したり、他の関数にパラメータとして渡したりすることができます。 [ 221 ]
動的型付け言語としては珍しく、PHPは関数のパラメータに対して型宣言をサポートしており、これは実行時に強制されます。これは、PHP 5.0以降ではクラスとインターフェース、PHP 5.1以降では配列、PHP 5.4以降では「呼び出し可能」型、PHP 7.0以降ではスカラー型(整数、浮動小数点数、文字列、ブール値)に対してサポートされています。[ 61 ] PHP 7.0では関数の戻り値の型宣言もサポートされており、パラメータリストの後にコロンを付けて型名を記述することで表現されます。[ 59 ]例えば、getAdder前述の例の関数は、PHP 7では次のように型アノテーションを付与できます。
関数getAdder ( int $x ) :クロージャ{ return fn ( int $y ) : int => $x + $y ; }$adder = getAdder ( 8 ); echo $adder ( 2 ); // "10" を出力しますecho $adder ( null ); // 間違った型が渡されたため例外がスローされます$adder = getAdder ([]); // これも例外をスローしますデフォルトでは、スカラー型の宣言は弱い型付けの原則に従います。例えば、パラメータの型が の場合int、PHPは整数だけでなく、変換可能な数値文字列、浮動小数点数、またはブール値もその関数に渡すことができ、それらを変換します。[ 61 ]しかし、PHP 7には「厳密な型付け」モードがあり、これを使用すると、ファイル内の関数呼び出しと戻り値に対してこのような変換が禁止されます。[ 61 ]
PHPオブジェクト
基本的なオブジェクト指向プログラミング機能はPHP 3で追加され、PHP 4で改善されました。[ 11 ]これにより、PHPはさらに抽象化され、プログラマーは言語を使用して創造的なタスクをより簡単に実行できるようになりました。オブジェクトの処理はPHP 5で完全に書き直され、機能セットが拡張され、パフォーマンスが向上しました。[ 222 ]以前のバージョンのPHPでは、オブジェクトは値型のように扱われていました。[ 222 ]この方法の欠点は、渡されたオブジェクトのコピーを作成するのではなく、変更したい場合、コードでPHPの「参照」変数を多用する必要があることでした。新しいアプローチでは、オブジェクトは値ではなくハンドルによって参照されます。[ 223 ]
PHP 5では、抽象クラス、最終クラス、抽象メソッド、最終メソッドに加えて、プライベートおよびプロテクトのメンバー変数とメソッドが導入されました。また、 C++などの他のオブジェクト指向言語に似た、コンストラクタとデストラクタを宣言する標準的な方法と、標準的な例外処理モデルも導入されました。さらに、PHP 5ではインターフェースが追加され、複数のインターフェースを実装できるようになりました。オブジェクトがランタイムシステムと対話できるようにする特別なインターフェースがあります。ArrayAccessを実装するオブジェクトは配列構文で使用でき、 IteratorまたはIteratorAggregateを実装するオブジェクトは言語構文で使用できます。エンジンには仮想テーブル機能がないため、静的変数はコンパイル時に参照ではなく名前でバインドされます。[ 224 ]foreach
開発者が予約語 を使ってオブジェクトのコピーを作成する場合clone、Zendエンジンは__clone()メソッドが定義されているかどうかを確認します。定義されていない場合は、__clone()オブジェクトのプロパティをコピーするデフォルトメソッドを呼び出します。__clone()メソッドが定義されている場合は、作成されたオブジェクトに必要なプロパティを設定する責任を負います。利便性のために、エンジンはソースオブジェクトのプロパティをインポートする関数を提供します。これにより、プログラマはソースオブジェクトの値渡しレプリカから開始し、変更が必要なプロパティのみをオーバーライドすることができます。[ 225 ]
PHPのプロパティとメソッドの可視性は、キーワード 、、を使用して定義されます。varのみが使用されている場合、デフォルトはpublicです。はの同義語です。宣言された項目はどこからでもアクセスできます。は、継承されたクラス(および項目を定義しているクラス)へのアクセスを制限します。は、項目を定義しているクラスのみの可視性を制限します。[ 226 ]同じ型のオブジェクトは、同じインスタンスでなくても、お互いのprivateメンバーとprotectedメンバーにアクセスできます。[ 227 ]publicprivateprotectedvarpublicpublicprotectedprivate
例
以下はPHP 8における オブジェクト指向プログラミングの基本的な例です
<?php抽象クラスUser{保護された文字列$name ;公開関数__construct (文字列$name ){// 最初の文字を大文字、残りを小文字にする$this -> name = ucfirst ( strtolower ( $name ));}パブリック関数greet () :文字列{"こんにちは、私の名前は " です。$this -> name ;を返します。}抽象パブリック関数job () :文字列;}クラスStudent はUserを拡張します{パブリック関数__construct (文字列$name 、プライベート文字列$course ){親:: __construct ( $name );}パブリック関数job () :文字列{"I learn "を返します。$this -> course ;}}クラスTeacherはUserを拡張します{パブリック関数__construct (文字列$name 、プライベート配列$teachingCourses ){親:: __construct ( $name );}パブリック関数job () :文字列{"私は教えています"を返します。implode ( ", " , $this -> teachingCourses );}}$学生= [新入生( 「アリス」、「コンピュータサイエンス」)、新入生(「ボブ」、「コンピュータサイエンス」)、新入生(「チャーリー」、「ビジネス研究科」)、];$teachers = [新しい教師( "Dan" , [ "コンピュータサイエンス" , "情報セキュリティ" ]),新しい教師( 「エリン」、「コンピュータサイエンス」、「3Dグラフィックスプログラミング」])、新しい教師( 「フランキー」、「オンラインマーケティング」、「ビジネス研究」、「電子商取引」])、];foreach ([ $students , $teachers ]を$usersとして) {echo $users [ 0 ] :: class . "s: \n " ;array_walk ( $users ,関数(ユーザー$user ) {echo " { $user -> greet () } , { $user -> job () } \n " ;});}このプログラムは以下を出力します。
生徒: こんにちは、私の名前はアリスです。コンピュータサイエンスを学んでいます。 こんにちは、私の名前はボブです。コンピュータサイエンスを学んでいます 。こんにちは、私の名前はチャーリーです。ビジネス学を学んでいます。 教師: こんにちは、私の名前はダンです。コンピュータサイエンスと情報セキュリティを教えています。 こんにちは、私の名前はエリンです。コンピュータサイエンスと3Dグラフィックスプログラミングを教えています。 こんにちは、私の名前はフランキーです。オンラインマーケティング、ビジネス学、Eコマースを教えています
実装
PHPの完全な実装は、単にPHPとして知られるオリジナルのみです。最も広く使用されており、Zend Engineを搭載しています。他の実装との区別をするために、非公式に「Zend PHP」と呼ばれることもあります。Zend Engineは、PHPソースコードをオンザフライで実行可能な内部形式にコンパイルするため、インタプリタとして機能します。[ 228 ] [ 229 ]また、PHPには正式な仕様がないため、Zend PHPのセマンティクスがPHPのセマンティクスを定義するため、PHPの「リファレンス実装」でもあります。Zendの動作によって定義されるPHPの複雑で微妙なセマンティクスのため、競合する実装が完全な互換性を提供することは困難です。[ 230 ]
PHPのスクリプト実行ごとに単一リクエストというモデルと、Zend Engineがインタープリタであるという事実は非効率性につながります。そのため、PHPのパフォーマンスを向上させるための様々な製品が開発されてきました。実行時間を短縮し、WebページにアクセスするたびにPHPソースコードをコンパイルする必要をなくすために、PHPスクリプトをPHPエンジンの内部形式で展開することもできます。これは、オペコードキャッシュを使用することで実現されます。オペコードキャッシュは、 PHPスクリプトのコンパイル済み形式(オペコード)を共有メモリにキャッシュすることで、スクリプト実行のたびにコードを解析およびコンパイルするオーバーヘッドを回避します。オペコードキャッシュであるZend Opcacheは、PHPバージョン5.5以降に組み込まれています。[ 231 ]広く使用されているオペコードキャッシュのもう1つの例として、 PECL拡張として利用可能なAlternative PHP Cache(APC)があります。[ 232 ]
Zend PHPは依然として最も人気のある実装ですが、他にもいくつかの実装が開発されています。これらの中にはコンパイラやJITコンパイルをサポートするものもあり、PHPとの完全な互換性は欠くものの、Zend PHPよりもパフォーマンス上の利点があります。代替実装としては、以下のものがあります。
- HHVM(HipHop Virtual Machine)はFacebookで開発され、オープンソースとして公開されています。PHPコードを高水準バイトコード(一般に中間言語と呼ばれる)に変換し、実行時にジャストインタイム(JIT)コンパイラによって動的にx86-64マシンコードに変換することで、最大6倍のパフォーマンス向上を実現します。[ 233 ]しかし、バージョン7.2以降、ZendはHHVMよりも優れたパフォーマンスを発揮し、[ 234 ] HHVM 3.24はPHPを公式にサポートする最後のバージョンです。[ 235 ]
- Parrot – 動的言語を効率的に実行するように設計された仮想マシン。クロストランスレータ Pipp は PHP ソース コードをParrot 中間表現に変換し、それが Parrot のバイトコードに変換されて仮想マシンによって実行されます。
- PeachPie – Roslynプラットフォーム上に構築された、 .NET共通中間言語(CIL) バイトコード用の第 2 世代コンパイラ。Phalangerの後継で、いくつかのアーキテクチャ コンポーネントを共有しています。
- Phalanger – PHPを.NET共通中間言語バイトコードにコンパイルします。PeachPieの前身です。
- Quercus – PHPをJavaバイトコードにコンパイルする
ライセンス
PHPはPHPライセンスに基づいてリリースされたフリーソフトウェアであり、以下の規定があります。[ 237 ]
このソフトウェアから派生した製品は、[email protected] からの事前の書面による許可なく、「PHP」と名付けたり、製品名に「PHP」を含めることはできません。ただし、「PHP Foo」や「phpfoo」ではなく、「Foo for PHP」と表記することで、PHPと連携して動作するソフトウェアであることを示すことができます。
この「PHP」の使用制限により、PHPライセンスはGNU一般公衆利用許諾書(GPL)と互換性がなく、Zendライセンスは元のBSDライセンスと同様の広告条項があるため互換性がありません。[ 238 ]
開発とコミュニティ
PHPのソース配布には、さまざまな無料のオープンソースライブラリが含まれているか、PHPバイナリビルドでそれらを使用しています。PHPは基本的にインターネット対応のシステムであり、ファイル転送プロトコル(FTP)サーバーや、PostgreSQL、MySQL、Microsoft SQL Server、SQLite(組み込みデータベース)、LDAPサーバーなど、多くのデータベースサーバーにアクセスするためのモジュールが組み込まれています。stdioファミリーなど、Cプログラマーに馴染みのある多くの関数は、標準的なPHPビルドで利用できます。[ 239 ]
PHP では、開発者がCで拡張機能を記述してPHP 言語に機能を追加することができます。PHP 拡張機能は、PHP に静的にコンパイルすることも、実行時に動的にロードすることもできます。Windows API、Unix 系オペレーティングシステムでのプロセス管理、マルチバイト文字列 ( Unicode )、cURL、いくつかの一般的な圧縮形式のサポートを追加する拡張機能が数多く作成されています。拡張機能によって利用可能になる他の PHP 機能には、インターネットリレーチャット(IRC) との統合、イメージとAdobe Flashコンテンツの動的生成、データベースにアクセスするための抽象化レイヤーとしてのPHP データオブジェクト(PDO)、 [ 240 ] [ 241 ] [ 242 ] [ 243 ] [ 244 ] [ 245 ] [ 246 ]、さらには音声合成などがあります。文字列や配列を処理する機能など、言語のコア機能の一部も拡張機能として実装されています。[ 247 ] PHP Extension Community Library (PECL) プロジェクトは、PHP 言語の拡張機能のリポジトリです。[ 248 ]コミュニティのほとんどはウェブ開発とサーバーサイドでのPHPの実行(クライアントサイドではJavaScriptも提供)に焦点を当てており、例外的な用途としては、例えばスタンドアロンのグラフィカルアプリケーション(PHP-GTKは10年以上メンテナンスされていない)、[ 249 ]さらにはドローンの制御などがあります。[ 250 ]
Zephirなどの他のプロジェクトでは、PHP拡張機能を高水準言語で作成し、ネイティブPHP拡張機能にコンパイルする機能を提供しています。このようなアプローチは、PHP拡張機能をC言語で直接記述する代わりに、拡張機能の開発を簡素化し、プログラミングとテストにかかる時間を短縮します。[ 251 ]
2018年12月までに、PHPグループは10人で構成されていました:Thies C. Arntzen、Stig Bakken、Shane Caraveo、Andi Gutmans、Rasmus Lerdorf、Sam Ruby、Sascha Schumann、Zeev Suraski、Jim Winstead、Andrei Zmievski。[ 252 ]
Zend Technologiesは、プログラマーが認定PHP開発者になるために、 PHP 8 [ 253 ]試験(以前はPHP 7と5.5に基づいていた)に基づいたPHP認定を提供しています。
PHP財団
| 設立 | 2021年11月22日 (2021年11月22日) |
|---|---|
| 創設者 | Automattic、Laravel、Acquia、Zend、Private Packagist、Symfony、Craft CMS、Tideways、PrestaShop、JetBrains [ 254 ] |
| ウェブサイト | https://thephp.foundation |
2021年11月26日、JetBrainsのブログは、PHPの設計と開発を支援するPHP Foundationの設立を発表しました。[ 255 ]
| 年 | コミット | レビュー | RFC |
|---|---|---|---|
| 2022 [ 256 ] | 683 | 283 | 8 |
| 2023 [ 257 ] | 784 | 702 | 17 |
| 2024 [ 258 ] | 1976 | 1278 | 13 |
財団はPHP言語のコアリポジトリの開発に取り組む「コア開発者」を雇用しました。財団の理事であるローマン・プロンスキー氏は、開発者には「市場水準の給与」を支払うことを目指していると述べました。[ 259 ]
財団に対する反応は概ね好意的であり、評論家たちはPHPの継続的な開発を保証し、言語コミュニティと人気の安定化に貢献した財団の役割を称賛している。[ 260 ] [ 261 ]
ドイツのソブリン・テック・ファンドはPHP財団を支援するために20万ユーロ以上を提供した。[ 262 ]
インストールと設定

PHP のサポートを Web サーバーに追加する主な方法は 2 つあります。ネイティブ Web サーバー モジュールとして追加する方法と、CGI 実行ファイルとして追加する方法です。PHP には、サーバー アプリケーション プログラミング インターフェイス(SAPI) と呼ばれる直接的なモジュール インターフェイスがあり、Apache HTTP Server、Microsoft IIS、Caddy (FrankenPHP 経由)、iPlanet Web Serverなど、多くの Web サーバーでサポートされています。OmniHTTPd など、他の一部の Web サーバーは、Microsoftの Web サーバー モジュール インターフェイスであるInternet Server Application Programming Interface (ISAPI) をサポートしています。PHP が Web サーバー用のモジュール サポートを備えていない場合は、常にCommon Gateway Interface (CGI) またはFastCGIプロセッサとして使用できます。その場合、Web サーバーは、PHP ファイルへのすべてのリクエストを PHP の CGI 実行ファイルを使用して処理するように設定されます。[ 263 ]
PHP-FPM(FastCGI Process Manager)は、PHPの代替FastCGI実装であり、バージョン5.3.3以降の公式PHPディストリビューションにバンドルされています。[ 264 ]以前のFastCGI実装と比較すると、いくつかの追加機能が含まれており、主に負荷の高いWebサーバーに役立ちます。[ 265 ]
PHPをコマンドラインスクリプトに使用する場合、PHPコマンドラインインターフェース(CLI)実行ファイルが必要です。PHPはPHP 4.3.0以降、 CLIサーバーアプリケーションプログラミングインターフェース(SAPI)をサポートしています。 [ 266 ]このSAPIの主な目的は、 PHPを用いたシェルアプリケーションの開発です。CLI SAPIと他のSAPIの間には多くの違いがありますが、多くの動作は共通しています。[ 267 ]
PHPには、様々なウェブサーバー向けのSAPIと呼ばれる直接的なモジュールインターフェースがあります。[ 268 ] Windows上のPHP 5とApache 2.0の場合、php5apache2.dllと呼ばれるDLLファイルの形式で提供されます。 [ 269 ]これは、PHPとウェブサーバー間のインターフェースを提供するモジュールであり、サーバーが理解できる形式で実装されています。この形式はSAPIとして知られています。
様々なウェブサーバー拡張機能には、様々な種類のSAPIが存在します。例えば、PHP言語用のSAPIには、上記に加えて、Common Gateway Interfaceやコマンドラインインターフェースなどがあります。[ 268 ] [ 270 ]
PHP は、「PHP デスクトップ」を使用することで、デスクトップグラフィカル ユーザー インターフェイス(GUI) アプリケーションの作成にも使用できます。GitHub 。または廃止されたPHP-GTK拡張モジュール。PHP-GTKは公式PHPディストリビューションには含まれておらず[ 263 ]、拡張モジュールとしてPHPバージョン5.1.0以降でのみ使用できます。PHP-GTKをインストールする最も一般的な方法は、ソースコードからコンパイルすることです[ 271 ] 。
PHPをクラウド環境にインストールして使用する場合、クラウド固有の機能を使用するためのソフトウェア開発キット(SDK)が提供されます。 [ 272 ]例えば:
- Amazon Web ServicesはPHP用のAWS SDKを提供している[ 273 ]
- Microsoft AzureはWindows Azure SDK for PHPで使用できます。[ 274 ]
多数の設定オプションがサポートされており、PHPのコア機能と拡張機能の両方に影響します。[ 275 ] [ 276 ]設定ファイルはphp.ini、PHPの使用方法に応じて異なる場所で検索されます。 [ 277 ]設定ファイルはさまざまなセクションに分かれており、[ 278 ]一部の設定オプションはウェブサーバー設定内でも設定できます。[ 279 ]
使用

PHPは汎用スクリプト言語で、特にサーバーサイドのWeb開発に適しています。この場合、PHPは通常Webサーバー上で実行されます。要求されたファイル内のPHPコードはPHPランタイムによって実行され、通常はWebサイトなどで使用される動的なWebページコンテンツや動的な画像を作成します。 [ 280 ]また、コマンドラインスクリプトやクライアントサイドのグラフィカルユーザーインターフェイス(GUI)アプリケーションにも使用できます。PHPはほとんどのWebサーバー、多くのオペレーティングシステムやプラットフォームに導入でき、多くのリレーショナルデータベース管理システム(RDBMS)で使用できます。ほとんどのWebホスティングプロバイダーは、クライアントによるPHPの使用をサポートしています。PHPは無料で利用でき、PHPグループではユーザーが独自に構築、カスタマイズ、拡張できるように完全なソースコードを提供しています。[ 15 ]

PHPはもともと動的なウェブページを作成するために設計されたが、現在では主にサーバーサイドスクリプティングに重点を置いており、[ 281 ] Python、MicrosoftのASP.NET、Sun MicrosystemsのJavaServer Pages、[ 282 ]など、ウェブサーバーからクライアントに動的なコンテンツを提供する他のサーバーサイドスクリプト言語と類似している。PHPはまた、迅速なアプリケーション開発(RAD)を促進するための構成要素と設計構造を提供する多くのソフトウェアフレームワークの開発も引き付けている。これらの中には、他のウェブフレームワークと同様の機能を提供するPRADO、CakePHP、Symfony、CodeIgniter、Laravel、Yii Framework、Phalcon、Laminasなどがある。 mod_perl
LAMPアーキテクチャは、ウェブアプリケーションを展開する方法としてウェブ業界で人気が高まっている。[ 283 ]このバンドルでは、 PHPはLinux、Apache、MySQLとともにPとしてよく使用されているが、PはPython、Perl、またはこれら3つの組み合わせを指すこともある。同様のパッケージであるWAMPとMAMPもWindowsとmacOSで利用可能で、最初の文字はそれぞれのオペレーティングシステムを表しています。PHPとApacheはどちらもmacOSの基本インストールの一部として提供されていますが、これらのパッケージのユーザーは、より簡単に最新の状態に維持できる、よりシンプルなインストールメカニズムを求めています。
特定の、より高度な使用シナリオ向けに、PHP はCまたはC++でカスタム拡張機能を作成するための明確に定義されドキュメント化された方法を提供しています。[ 284 ] [ 285 ] [ 286 ] [ 287 ] [ 288 ] [ 289 ] [ 290 ]追加ライブラリの形で言語自体を拡張することに加えて、拡張機能は、実行速度が重要であり、真のコンパイル言語を使用することで改善の余地がある場合に、実行速度を向上させる方法を提供しています。[ 291 ] [ 292 ] PHP は、他のソフトウェアプロジェクトに組み込むための明確に定義された方法も提供しています。これにより、PHP を別のプロジェクトの内部スクリプト言語として簡単に使用でき、プロジェクト固有の内部データ構造との緊密なインターフェースも提供されます。[ 293 ]
PHPはコア言語レベルでマルチスレッドをサポートしていないため賛否両論の評価を受けているが[ 294 ] 、 PECL拡張モジュール「pthreads」によってスレッドの使用が可能になっている。[ 295 ] [ 296 ]
コマンドライン インターフェイス php-cli と、PHP 用の 2 つのActiveX Windows Script Hostスクリプト エンジンが作成されました。
人気度と使用状況の統計
PHPは、 MediaWiki、[ 297 ] WordPress、[ 298 ] Joomla、[ 299 ] Drupal、[ 300 ] Moodle、[ 301 ] eZ Publish、eZ Platform、SilverStripeなどのWebコンテンツ管理システムに使用されています。[ 302 ]
2013年1月時点で、PHPは2億4000万以上のウェブサイト(サンプルの39%)で使用されており、210万台のウェブサーバーにインストールされていました。[ 303 ]
2025年12月20日現在(PHP 8.5のリリースから1か月後)、言語が特定できたウェブサイトの72.5%でPHPがサーバーサイドプログラミング言語として使用されています。PHP 8は最も使用されている言語バージョンで、PHPを使用しているウェブサイトの54.7%がこのバージョンを使用しています。一方、PHP 7を使用しているウェブサイトは35.9%、PHP 5を使用しているウェブサイトは9.3%、PHP 4を使用しているウェブサイトは0.1%です。[ 194 ]
- PHP 8.5: PHP 8の0.1% (0.05%)
- PHP 8.4: PHP 8の6.7% (3.66%)
- PHP 8.3: PHP 8の20.9% (11.4%)
- PHP 8.2: PHP 8の38.6% (21.1%)
- PHP 8.1: PHP 8の23.2% (12.7%)
- PHP 8.0: PHP 8の10.6% (5.80%)
- PHP 7.4: PHP 7の73.8% (26.5%)
- PHP 7.3: PHP 7の10.7% (3.84%)
- PHP 7.2: PHP 7の8.30% (2.98%)
- PHP 7.1: PHP 7の3.40% (1.22%)
- PHP 7.0: PHP 7の3.70% (1.33%)
- PHP 5.6: PHP 5の54.9% (5.11%)
- PHP 5.5: PHP 5の15.0% (1.40%)
- PHP 5.4: PHP 5の15.0% (1.40%)
- PHP 5.3: PHP 5の8.00% (0.74%)
- PHP 5.2: PHP 5の6.70% (0.62%)
- PHP 5.1: PHP 5 の 0.40% (0.04%)
- PHP 5.0: PHP 5 の 0.1% 未満 (0.00%)
- PHP 4.4: PHP 4 の 73.9% (0.07%)
- PHP 4.3: PHP 4の22.0% (0.02%)
- PHP 4.2: PHP 4 の 2.70% (0.00%)
- PHP 4.1: PHP 4 の 0.70% (0.00%)
- PHP 4.0: PHP 4 の 0.10% (0.00%)
セキュリティ
2019年、国家脆弱性データベースに掲載されたすべての脆弱性の11%がPHPに関連していました。[ 308 ]歴史的に、このデータベースに1996年以降に掲載されたすべての脆弱性の約30%がPHPに関連しています。言語自体またはそのコアライブラリの技術的なセキュリティ上の欠陥は頻繁ではありません(2009年には22件、全体の約1%ですが、掲載されているプログラムの約20%にPHPが該当します)。[ 309 ]プログラマーがミスを犯すことを認識し、一部の言語では、多くの問題を引き起こす入力検証の欠如を自動的に検出するための汚染チェックが組み込まれています。このような機能は過去にPHPに対して提案されましたが、却下されたか、提案が放棄されました。[ 310 ] [ 311 ] [ 312 ]
Suhosin [ 313 ]やSnuffleupagus [ 314 ]などのサードパーティプロジェクトは、言語の危険な部分を削除または変更することを目的としています。
歴史的に、PHPの旧バージョンには、実行時設定のための設定パラメータとデフォルト値がいくつか存在し、一部のPHPアプリケーションでセキュリティ上の問題が発生する可能性がありました。これらのうち、最もよく知られていたのは[315]magic_quotes_gpcとregister_globals[ 316 ]の設定ディレクティブです。[317]は、URLパラメータをPHP変数に変換し、攻撃者が初期化されていないグローバル変数の値を設定してPHPスクリプトの実行を妨害できるようにすることで、深刻なセキュリティ上の脆弱性を招きました。「マジッククォート」と「グローバル変数の登録」設定のサポートはPHP 5.3.0以降非推奨となり、PHP 5.4.0では削除されました。[ 318 ]
ランタイム設定の脆弱性のもう1つの例は、アップロードされたファイルが保存されているディレクトリに対してPHPの実行を無効にしていない場合(たとえば、engine構成ディレクティブを使用して)に発生します。 [ 317 ]これを有効にすると、アップロードされたファイルに埋め込まれた悪意のあるコードが実行される可能性があります。 [ 318 ] [ 319 ] [ 320 ]ベストプラクティスは、Webサーバーで利用可能なドキュメントルートの外側に画像ディレクトリを配置し、中間スクリプトを介して提供するか、アップロードされたファイルを保存するディレクトリに対してPHPの実行を無効にすることです。
また、共有ウェブホスティング環境でPHP拡張機能の動的読み込みを有効にすると(enable_dl設定ディレクティブ経由)[ 321 ]、セキュリティ上の問題が発生する可能性があります。[ 322 ] [ 323 ]
暗黙の型変換によって異なる値が等価とみなされ、場合によってはプログラマの意図に反する形でセキュリティ上の問題が生じる可能性があります。例えば、比較の結果は'0e1234' == '0'となります。これは、数値として解析可能な文字列が数値に変換されるためです。この場合、最初に比較された値は、値 ( ) を持つ科学的記数法trueとして扱われます。0 × 10 1234)はゼロです。このようなエラーは、MD5パスワードハッシュを比較する際に、 Simple Machines Forum [ 324 ] 、Typo3 [ 325 ]、phpBB [ 326 ]で認証の脆弱性を引き起こしました。 推奨される方法は、(タイミング攻撃の安全性のため)または恒等演算子()を使用することです。hash_equals()strcmp==='0e1234' === '0'false
Zone-Hが発表した2013年の17万件以上のウェブサイト改ざんの分析では、最も頻繁に(53%)使用された手法はファイルインクルードの脆弱性の悪用であり、主にPHP言語の構成要素の、、の安全でない使用に関連していました。[ 327 ] [ 328 ]includerequireallow_url_fopen
暗号セキュリティ
PHPには、疑似乱数生成器を使用するrand()[ 329 ]およびmt_rand()[ 330 ]関数が含まれていますが、暗号的に安全ではありません。バージョン8.1以降では、システムが提供する暗号的に安全な乱数源を使用する関数が含まれています。[ 331 ]random_int()
PHPのエントロピーソースに対して実行可能な攻撃には、「シード攻撃」と「状態回復攻撃」の2種類があります。2012年時点で、250ドルのGPUは1秒あたり最大2.30回のMD5計算を実行できますが、 750ドルのGPUは同時にその4倍の計算を実行できます。[ 332 ]これは「誕生日攻撃」と組み合わせると、深刻なセキュリティ脆弱性につながる可能性があります。
長期サポート
PHP開発チームは、マイナーバージョンのリリース後2年間、公式のバグ修正を提供します。その後2年間はセキュリティ修正のみがリリースされます。[ 192 ]その後、リリースはサポート終了とみなされ、公式サポートは終了します
これを超える長期サポートは、Zendなどの商用プロバイダーから提供されています[ 333 ] [ 334 ]
参照
- プログラミング言語の比較
- Apache、MySQL、PHPパッケージのリスト
- PHPアクセラレータのリスト
- PHPエディタの一覧
- PHPソフトウェアとツールのリスト
- PEAR (PHP 拡張機能およびアプリケーション リポジトリ)
- PHPアクセラレータ
- テンプレートプロセッサ
- XAMPP(無料かつオープンソースのクロスプラットフォームWebサーバーソリューションスタックパッケージ)
- Zend Server
参考文献
- ^ Zendエンジンの大部分は、PHP 4以降のバージョンについてはZend Engine License(Zend Engine License )の下にあります(PHPバージョン3.0以前のバージョンについては、 GNU General Public Licenseバージョン2以降とPHP Licenseのデュアルライセンスです)。 [ 5 ]
- ^ a b Lerdorf, Rasmus (1995年6月8日). 「アナウンス:パーソナルホームページツール(PHPツール)」 . 2011年6月7日閲覧。
- ^ a b Lerdorf, Rasmus (2017年4月26日). 「PHP on Hormones – Rasmus LerdorfによるPHPの歴史に関するプレゼンテーション(カリフォルニア州サンタクララのMySQLカンファレンスにて)」 The Conversations Network. 2013年7月29日時点のオリジナルよりアーカイブ。 2009年6月22日閲覧。
- ^ 「バージョン 8.5.2」 2026年1月15日. 2026年1月17日閲覧。
- ^ 「PHP: 関数の引数 – マニュアル」。
- ^ 「PHP: リリースアーカイブ(ミュージアム)」。
- ^ 「PHP: 序文 – マニュアル」。
- ^ Stogov, Dmitry [@dstogov] (2015年12月4日). 「#PHP7 の最適化のアイデアの一部がHHVM、LuaJIT、V8から生まれたことは周知の事実です。@HipHopVM @SaraMG に感謝します。#php7thankyou」 (ツイート) – Twitter経由。
- ^ 「PHP: ハイパーテキストプリプロセッサ」 。 2020年2月12日閲覧。
- ^ a bポール・クリル(2013年11月18日)「誇大広告を信じろ:PHP創設者がFacebookのヒップホップ技術を支持」InfoWorld。2022年10月13日閲覧。
- ^ 「お知らせ:個人ホームページツール(PHPツール)」 。 2022年11月3日閲覧。
- ^ a b c d e f g h i 「 PHPと関連プロジェクトの歴史」 PHPグループ. 2008年2月25日閲覧。
- ^ a b「PHPの歴史」 . php.net .
- ^ Olsson, Mikael (2013年9月4日). PHPクイックスクリプトリファレンス. Apress. ISBN 978-1-4302-6284-8。
- ^ PHPマニュアル:序文、PHP
- ^ a b「HTMLへのPHPの埋め込み」 O'Reilly. 2001年5月3日. 2008年2月19日時点のオリジナルよりアーカイブ。2008年2月25日閲覧。
- ^ Lerdorf, Rasmus (2012年7月20日). 「PHPはPerlで書かれたと言い続ける人がいるのはなぜだろう。そんなことは決してないのに。#php」 . Twitter . 2014年9月4日閲覧。
- ^ Lerdorf, Rasmus (2007-04-26). 「PHP on Hormones」 . The Conversations Network.オリジナル(mp3)から2019年1月6日にアーカイブ。 2009年6月22日閲覧。
- ^ Lerdorf, Rasmus (2007). 「スライド3」 . 「PHP on Hormones」講演スライド. PHPグループ. 2009年6月22日閲覧.
- ^ Lerdorf, Rasmus (1995-06-08). 「お知らせ: 個人ホームページツール (PHPツール)」 .ニュースグループ: comp.infosystems.www.authoring.cgi . 2006年9月17日閲覧。
- ^ 「Rasmus Lerdorf、Yahoo!シニアテクニカル:PHP、Behind the Mic」 2003年11月19日。 2013年7月28日時点のオリジナルよりアーカイブ。
- ^ Alshetwi, AB; Rahmat, RAAO; Borhan, MN; Ismael, S.; Ali, A.; Irtema, HIM; Alfakhria, AY (2018). 「発展途上国における道路交通の最適化のためのWebベースエキスパートシステム」2024年2月13日閲覧。
- ^ 「PHPの問題」 。 2010年12月20日閲覧。
- ^ "php.internals: Re: 関数名の一貫性" . news.php.net . 2013年12月28日. 2014年2月9日閲覧。
- ^ Rasmus Lerdorf (2013年12月16日). 「Re: 柔軟な関数命名」 .ニュースグループ: php.internals . 2013年12月26日閲覧。
- ^ 「PHP – 頭字語の意味投票」 PHP.net . 2000年8月15日時点のオリジナルよりアーカイブ。
- ^ 「Zend Engine バージョン 2.0: 機能の概要と設計」。Zend Technologies Ltd. 2006年7月19日時点のオリジナルよりアーカイブ。 2006年9月17日閲覧。
- ^ 「php.net 2007 ニュースアーカイブ」 . PHPグループ. 2007年7月13日. 2008年2月22日閲覧。
- ^ Kerner, Sean Michael (2008年2月1日). 「PHP 4は死んだ――PHP 5は長生きだ」 . InternetNews. 2018年8月6日時点のオリジナルよりアーカイブ。 2018年12月16日閲覧。
- ^ Trachtenberg, Adam (2004-07-15). 「PHP 5が素晴らしい理由!」 O'Reilly. 2016年3月31日時点のオリジナルよりアーカイブ。 2008年2月22日閲覧。
- ^ "GoPHP5" . 2011年7月17日時点のオリジナルよりアーカイブ。
- ^ 「PHPプロジェクトがGo PHP 5に協力」(PDF) . GoPHP5プレスリリース.オリジナル(PDF)から2019年8月4日時点のアーカイブ。 2008年2月23日閲覧。
- ^ "GoPHP5" . GoPHP5. 2011年4月27日時点のオリジナルよりアーカイブ。 2008年2月22日閲覧。
- ^ 「型: 文字列 (PHPマニュアル)」 . PHP.net . 2013年9月22日閲覧。
- ^ 「文字列型の詳細(PHPマニュアル)」 . PHP.net . 2021年9月22日閲覧。
- ^ Andrei Zmievski (2005年8月10日). 「PHP Unicodeサポート設計書」(メーリングリスト) . 2014年2月9日閲覧。
- ^ 「PHP 5.5 または 6.0」。2014年2月9日閲覧。
- ^ Andrei Zmievski (2011年4月22日). 「善きもの、悪しきもの、そして醜いもの:UnicodeとPHP 6に何が起こったのか」 . 2014年2月9日閲覧。
- ^ Rasmus Lerdorf (2010-03-11). 「PHP 6」(メーリングリスト). 2014年2月7日閲覧。
- ^ 「PHPにおける遅延静的バインディング」 Digital Sandwich、2006年2月23日。 2008年3月25日閲覧。
- ^ 「Static Keyword」 . PHPグループ. 2008年3月25日閲覧。
- ^ a b c d「PHP: リリースプロセス」 . 2011年6月20日. 2013年10月6日閲覧。
- ^ 「PHP for Windows: バイナリとソースのリリース (5.3)」 . php.net . 2013年10月29日閲覧。
- ^ 「PHP for Windows: バイナリとソースのリリース (5.4)」 . php.net . 2013年10月29日閲覧。
- ^ 「PHP for Windows: バイナリとソースのリリース (5.5)」 . php.net . 2013年10月29日閲覧。
- ^ 「PHP: サポートされているバージョン」。
- ^ 「PHP 6 vs PHP 7の終わらないマペット論争」 。 2015年11月19日時点のオリジナルよりアーカイブ。2015年11月19日閲覧。
- ^ 「RFC: PHPの次期リリース名」 . php.net . 2014年7月7日. 2014年7月15日閲覧。
- ^ 「Re: [PHP-DEV] [VOTE] [RFC] PHPの次期リリース名(再び)」 2014年7月30日. 2014年7月30日閲覧。
- ^ 「phpng: PHP エンジンのリファクタリングによりパフォーマンスが大幅に向上」。news.php.net 。
- ^ "PHP: rfc:phpng" . php.net . 2014年12月16日閲覧。
- ^ a b "PHP: phpng" . php.net . 2014年7月15日閲覧。
- ^ 「ブランチ 'ZendEngine3' をマージ」" . github.com . 2014-12-05 . 2014-12-05に取得.
- ^ a b「PHP RFC: Uniform Variable Syntax」 . php.net . 2014年5月31日. 2014年7月30日閲覧。
- ^ 「PHP RFC: "foreach" の動作を修正」 . php.net . 2015年5月21日閲覧。
- ^ a b "PHP RFC: 整数セマンティクス" . php.net . 2015年5月21日閲覧。NaN
とInfinityを整数にキャストする際に常にゼロになるようにすることで、クロスプラットフォームの一貫性が向上し、現在の結果よりも驚きが少なくなります。
- ^ 「PHP RFC: オーバーフロー時のZPPエラー」 . php.net . 2015年5月21日閲覧。
- ^ 「PHP RFC: 廃止された、またはまだPHP7に移植されていないSAPIと拡張機能の削除」 . php.net . 2015年5月21日閲覧。
- ^ 「PHP RFC: 代替PHPタグの削除」 . php.net . 2015年5月21日閲覧。
- ^ a b c「RFC: 戻り値の型」 . php.net . 2015年1月27日. 2015年1月28日閲覧。
- ^ a b "PHP: rfc:typed_properties_v2" . wiki.php.net . 2019年4月4日閲覧。
- ^ a b c d e f「RFC: スカラー型宣言」 . php.net . 2015年3月16日. 2015年3月17日閲覧。
- ^ a b "PHP: rfc:iterable" . php.net . 2016年6月10日. 2023年6月30日閲覧。
- ^ a b "PHP: rfc:nullable_types" . php.net . 2014年4月10日. 2023年6月30日閲覧。
- ^ a b "PHP: rfc:void_return_type" . php.net . 2015年11月9日. 2015年11月14日閲覧。
- ^ a b「PHP: rfc:object-typehint」 . wiki.php.net .
- ^ a b "PHP: rfc:isset_ternary" . php.net . 2014年12月16日閲覧。
- ^ a b「複合比較(宇宙船)演算子」 . php.net . 2015年5月21日閲覧。
- ^ a b "PHP: rfc:short_list_syntax" . php.net . 2016年4月7日. 2023年6月30日閲覧。
- ^ a b "PHP: rfc:multiple-catch" . php.net . 2016年3月6日. 2023年6月30日閲覧。
- ^ a b「PHP: rfc:flexible_heredoc_nowdoc_syntaxes」 . wiki.php.net .
- ^ a b "PHP: rfc:null_coalesce_equal_operator" . wiki.php.net . 2019年4月4日閲覧。
- ^ a b c Brent. 「PHP 8の新機能」 Stitcher . 2020年9月22日閲覧。
- ^ 「PHP 8 リリース」 . PHP . 2020年11月27日閲覧。
- ^ Brent. 「PHP 8:実際のウェブアプリケーションにおけるJITパフォーマンス」 Stitcher.io . 2020年10月4日閲覧。
- ^ Rethams, Derick. 「PHP 8: JIT の概要」 .
- ^ポポフ、ニキータ (2020 年 7 月 13 日)。」「PHP 8.0の新機能は?」Nikita Popov著。PHP fwdays。2021年12月11日時点のオリジナルよりアーカイブ。2020年10月4日閲覧。
- ^ Daniele, Carlo (2020年5月25日). 「PHP 8の新機能(機能、改善点、JITコンパイラ)」 . Kinsta . 2020年12月24日閲覧。
- ^ Karunaratne, Ayesh. 「PHP 8.2: センシティブパラメータ値の編集サポート」 . PHP.Watch . 2025年10月12日閲覧。
- ^ a b「PHP: rfc:marking_overriden_methods」 . wiki.php.net . 2023年12月17日閲覧。
- ^ "PHP: rfc:deprecated_attribute" . wiki.php.net . 2025年10月12日閲覧。
- ^ "PHP: rfc:marking_return_value_as_important" . wiki.php.net . 2025年10月12日閲覧。
- ^ "PHP: rfc:delayedtargetvalidation_attribute" . wiki.php.net . 2025年11月14日閲覧。
- ^ Scherzer, Daniel (2025年8月20日). 「ブログ: #[\DelayedTargetValidation] 属性の説明」 . scherzer.dev . 2025年11月14日閲覧。
- ^ a b「PHP RFC: Union Types 2.0」 . wiki.php.net . 2020年8月14日閲覧。
- ^ a b「PHP: rfc:pure-intersection-types」 . wiki.php.net . 2021年11月26日閲覧。
- ^ a b "PHP: rfc:dnf_types" . wiki.php.net . 2023年2月7日閲覧。
- ^ a b "PHP: rfc:noreturn_type" . wiki.php.net . 2021年11月26日閲覧。
- ^ a b「PHP: rfc:null-false-standalone-types」 . wiki.php.net . 2022年6月16日閲覧。
- ^ a b「PHP: rfc:true-type」 . wiki.php.net . 2022年6月16日閲覧。
- ^ a b「PHP RFC: より健全な文字列と数値の比較」 . wiki.php.net . 2020年8月14日閲覧。
- ^ a b「PHP RFC: Saner numeric strings」 . wiki.php.net . 2020年8月14日閲覧。
- ^ a b "PHP: rfc:lsp_errors" . wiki.php.net . 2019年5月26日閲覧。
- ^ Karunaratne, Ayesh. 「PHP 8.1: null非許容の内部関数パラメータに「null」を渡すことは非推奨」 . PHP.Watch . 2025年10月12日閲覧。
- ^ Karunaratne, Ayesh. 「PHP 8.2: 動的プロパティは非推奨」 . PHP.Watch . 2025年10月12日閲覧。
- ^ a b c d e f g h i j k l「サポートされていないブランチ」 . php.net . 2019年7月31日閲覧。
- ^ 「PHP 4.0.0 リリース」。2020年10月25日閲覧。
- ^ a b c d「PHP: PHP 4 ChangeLog」 . PHPグループ. 2008年1月3日. 2008年2月22日閲覧。
- ^ 「PHP 4.1.0 リリースアナウンスメント」 。 2020年10月25日閲覧。
- ^ 「PHP 4.2.0 リリースアナウンスメント」 。 2020年10月25日閲覧。
- ^ 「PHP 4.3.0 リリースアナウンスメント」 。 2020年10月25日閲覧。
- ^ 「コマンドラインからPHPを使用する」 . PHPマニュアル. PHPグループ. 2009年9月11日閲覧。
- ^ 「PHP 4.4.0 リリースアナウンスメント」 。 2020年10月25日閲覧。
- ^ 「PHP 4.4.0 リリースアナウンスメント」 . PHPマニュアル. PHPグループ. 2013年11月24日閲覧。
- ^ 「PHP 5.0.0 リリース!」2020年10月25日閲覧。
- ^ a b c「PHP: PHP 5 ChangeLog」 . PHPグループ. 2007年11月8日. 2008年2月22日閲覧。
- ^ 「PHP 5.1.0 リリースアナウンスメント」 。 2020年10月25日閲覧。
- ^ 「PHPマニュアル: PDO」 . PHPグループ. 2011年11月15日. 2011年11月15日閲覧。
- ^ 「PHP 5.2.0 リリースアナウンスメント」 。 2020年10月25日閲覧。
- ^ 「PHP 5.3.0 リリースアナウンスメント」 。 2020年10月25日閲覧。
- ^ 「PHP 5.4.0 リリースアナウンスメント」 。 2020年10月25日閲覧。
- ^ 「組み込みウェブサーバー」 。 2012年3月26日閲覧。
- ^ 「PHP 5.5.0 リリースアナウンスメント」 。 2020年10月25日閲覧。
- ^ a b c d「サポートされているバージョン」 . php.net . 2017年12月13日閲覧。
- ^ 「PHP 5.5.0の変更点」 . php.net . 2015年3月1日時点のオリジナルよりアーカイブ。2015年3月3日閲覧。
- ^ 「PHP 5.6.0 リリースアナウンスメント」 。 2020年10月25日閲覧。
- ^ 「PHP 5.5.xからPHP 5.6.xへの移行」 . php.net . 2014年3月24日閲覧。
- ^ Corbet, Jonathan (2010年3月24日). 「PHP 6のリセット」。
少なくとも2008年以降、PHP 6を解説したとされる書籍が店頭に並んでいます。しかし、2010年3月現在、PHP 6のリリースはまだ行われていません。それどころか、リリースに近づいてすらいません。最近の出来事から、PHP 6は2011年より前にはリリースされないことが示唆されています。そもそもリリースされるとしてもです。
- ^ Krill, Paul (2014-10-31). 「PHP 7、フルスピードで前進」 . InfoWorld .
最近のPHPのバージョンは5.xリリースシリーズに含まれていますが、PHP 6はリリースされません。「数年前にバージョン6の計画がありましたが、当時の計画は現在のものとは大きく異なっていたため、バージョン6はスキップします」とGutmans氏は述べています。バージョン7に直接移行することで混乱を避けることができます。
- ^ 「ニュースアーカイブ – 2018: PHP 7.2.9 リリース」 . php.net . 2018年8月16日. 2018年8月16日閲覧。
- ^ "PHP: rfc:size_t_and_int64_next" . php.net . 2014年12月16日閲覧。
- ^ "PHP: rfc:abstract_syntax_tree" . php.net . 2014年12月16日閲覧。
- ^ "PHP: rfc:closure_apply" . php.net . 2014年12月16日閲覧。
- ^ "PHP: rfc:integer_semantics" . php.net . 2014年12月16日閲覧。
- ^ 「RFC: Unicodeコードポイントエスケープ構文」 . 2014年11月24日. 2014年12月19日閲覧。
- ^ 「PHP RFC: ジェネレーター委任」 . php.net . 2015年5月21日閲覧。
- ^ 「PHP RFC: 匿名クラス」 . php.net . 2015年5月21日閲覧。
- ^ 「PHP RFC: Easy User-land CSPRNG」 . php.net . 2015年5月21日閲覧。
- ^ 「PHP RFC: エンジン内の例外(PHP 7用)」 . php.net . 2015年5月21日閲覧。
- ^ 「PHP RFC: グループ使用宣言」 . php.net . 2015年5月21日閲覧。
- ^ "PHP: rfc:class_constant_visibility" . php.net . 2015年10月27日. 2015年12月8日閲覧。
- ^ "PHP: rfc:libsodium" . wiki.php.net .
- ^ 「PHP: rfc:allow-abstract-function-override」 . wiki.php.net .
- ^ "PHP: rfc:parameter-no-type-variance" . wiki.php.net .
- ^ "PHP: todo:php73" . wiki.php.net。
- ^ "PHP: rfc:list_reference_assignment" . wiki.php.net .
- ^ "PHP: rfc:pcre2-migration" . wiki.php.net .
- ^ 「PHP: hrtime – マニュアル」 . php.net .
- ^ 「PHP 7.4.0 リリース!」 . php.net . 2019年11月28日閲覧。
- ^ "PHP: rfc:preload" . wiki.php.net . 2019年4月4日閲覧。
- ^ 「PHP: rfc:improve-openssl-random-pseudo-bytes」 . wiki.php.net . 2019年4月4日閲覧。
- ^ "PHP: rfc:weakrefs" . wiki.php.net . 2019年4月5日閲覧。
- ^ "PHP: rfc:ffi" . wiki.php.net . 2019年4月5日閲覧。
- ^ "PHP: rfc:permanent_hash_ext" . wiki.php.net . 2019年4月5日閲覧。
- ^ "PHP: rfc:password_registry" . wiki.php.net . 2019年4月5日閲覧。
- ^ "PHP: rfc:mb_str_split" . wiki.php.net . 2019年4月5日閲覧。
- ^ "PHP: rfc:reference_reflection" . wiki.php.net . 2019年4月5日閲覧。
- ^ "PHP: rfc:deprecate-and-remove-ext-wddx" . wiki.php.net . 2019年4月5日閲覧。
- ^ "PHP: rfc:custom_object_serialization" . wiki.php.net . 2019年4月5日閲覧。
- ^ 「PHP: サポートされているバージョン」 . php.net . 2023年11月26日閲覧。
- ^ "PHP: rfc:jit" . wiki.php.net . 2019年4月5日閲覧。
- ^ "PHP: rfc:negative_array_index" . wiki.php.net . 2019年4月5日閲覧。
- ^ 「PHP RFC: 抽象特性メソッドの検証」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: 算術演算子/ビット演算子のより厳格な型チェック」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: エンジン警告の再分類」 . wiki.php.net . 2020年8月14日閲覧。
- ^ "PHP: rfc:consistent_type_errors" . wiki.php.net . 2019年4月5日閲覧。
- ^ 「PHP RFC: ロケールに依存しない浮動小数点数から文字列へのキャスト」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: 変数構文の調整」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: 属性 V2」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: 属性の修正」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: より短い属性構文」 . wiki.php.net . 2020年6月20日閲覧。
- ^ 「PHP RFC: 属性構文の短縮化」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: 名前付き引数」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: マッチ式 v2」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: コンストラクタープロパティの昇格」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: Mixed Type v2」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: 静的戻り値の型」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: Nullsafe演算子」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: 非キャプチャキャッチ」 . wiki.php.net . 2020年8月14日閲覧。
- ^ 「PHP RFC: throw式」 . wiki.php.net . 2020年8月14日閲覧。
- ^ Andre, Tyson. 「PHP RFC: 常に利用可能なJSON拡張機能」 . PHP . 2020年10月25日閲覧。
- ^ "PHP: todo:php81" . wiki.php.net 。2022-06-16に取得。
- ^ 「PHP RFC: 明示的な8進整数リテラル表記」 . wiki.php.net . 2020年11月25日閲覧。
- ^ 「PHP RFC: 列挙型」 . wiki.php.net . 2021年3月25日閲覧。
- ^ "PHP: rfc:readonly_properties_v2" . wiki.php.net . 2021年11月26日閲覧。
- ^ 「PHP: rfc:first_class_callable_syntax」 . wiki.php.net . 2021年11月26日閲覧。
- ^ "PHP: rfc:new_in_initializers" . wiki.php.net . 2021年11月26日閲覧。
- ^ "PHP: rfc:final_class_const" . wiki.php.net . 2021年11月26日閲覧。
- ^ "PHP: rfc:fibers" . wiki.php.net . 2021年11月26日閲覧。
- ^ "PHP: todo:php82" . wiki.php.net . 2022年6月16日閲覧。
- ^ "PHP: rfc:readonly_classes" . wiki.php.net . 2022年6月16日閲覧。
- ^ "PHP: rfc:strtolower-ascii" . wiki.php.net . 2022年6月16日閲覧。
- ^ "PHP: rfc:constants_in_traits" . wiki.php.net . 2023年2月7日閲覧。
- ^ “PHP 8.3.0 リリース!” . php.net . 2023年11月23日. 2023年11月24日閲覧。
- ^ "PHP: rfc:typed_class_constants" . wiki.php.net . 2023年12月17日閲覧。
- ^ "PHP: rfc:dynamic_class_constant_fetch" . wiki.php.net . 2023年12月17日閲覧。
- ^ "PHP: rfc:readonly_amendments" . wiki.php.net . 2023年12月17日閲覧。
- ^ "PHP: rfc:json_validate" . wiki.php.net . 2023年12月17日閲覧。
- ^ "PHP: rfc:randomizer_additions" . wiki.php.net . 2023年12月17日閲覧。
- ^ "PHP: todo: php84" . php.net . 2024年3月26日. 2024年3月26日閲覧。
- ^ "PHP: todo: php85" . php.net . 2024年4月16日. 2025年4月16日閲覧。
- ^ "PHP: rfc:pipe-operator-v3" . wiki.php.net . 2025年8月6日閲覧。
- ^ a b「PHP: RFC:release_cycle_update」。
- ^ 「PHP: サポートされていないブランチ」。
- ^ a b c「ウェブサイトにおけるPHPの使用統計」 . W3Techs – World Wide Web Technology Surveys . W3Techs . 2025年12月20日閲覧。
- ^ 「PHP: ElePHPant」 . 2014年10月4日. 2014年10月4日閲覧。
- ^ 「リダイレクト中…」 . wwphp-fb.github.io .
- ^ 「PHPマスコットの誕生 - elePHPantの作者、Vincent Pontierが真実を明かす!」 7php.com 2014年1月6日
- ^ "ElePHPant" . PHP.earth . 2024年2月13日閲覧。
- ^ 「PHP: ElePHPant」 . www.php.net .
- ^ 「ゾウのフィールドガイド」afieldguidetoelephpants.net。
- ^ a b "PHP: rfc:shortags" . php.net . 2008年4月3日. 2014年5月8日閲覧。
- ^ 「PHP: 基本構文」 . PHPグループ. 2008年2月22日閲覧。
- ^ 「基本コーディング標準」 . PHPフレームワーク相互運用性グループ. 2016年1月3日閲覧。
- ^ "echo – マニュアル" . php.net . 2014年2月17日閲覧。
- ^ 「コアphp.iniディレクティブの説明 - マニュアル」 . php.net . 2002年3月17日. 2014年2月17日閲覧。
- ^ 「PHP対応の最初のページ」 PHPグループ。 2008年2月25日閲覧。
- ^ Bray, Tim; et al. (2008年11月26日). 「処理命令」 .拡張マークアップ言語 (XML) 1.0 (第5版) . W3C . 2009年6月18日閲覧。
- ^ 「変数」 . PHPグループ. 2008年3月16日閲覧。
- ^ 「命令分離」 PHPグループ. 2008年3月16日閲覧。
- ^ 「コメント」 . PHPグループ. 2008年3月16日閲覧。
- ^ 「PHPにおける整数、ハサミによる実行、そして移植性」 MySQLパフォーマンスブログ、2007年3月27日。2007年3月28日閲覧。
- ^ 「整数」 . PHPマニュアル. PHPグループ. 2025年5月26日閲覧。
- ^ a b c d e「型」 . PHPグループ. 2008年3月16日閲覧。
- ^ 「文字列」 . PHPグループ. 2008年3月21日閲覧。
- ^ "SPL – StandardPHPLibrary" . PHP.net . 2009年3月16日. 2009年3月16日閲覧。
- ^ a b「ユーザー定義関数(PHPマニュアル)」 . php.net . 2014年7月4日. 2014年7月7日閲覧。
- ^ a b「変数関数(PHPマニュアル)」 . php.net . 2014年7月4日. 2014年7月7日閲覧。
- ^ "create_function() (PHPマニュアル)" . php.net . 2022年4月6日. 2022年5月4日閲覧。
- ^ 「匿名関数(PHPマニュアル)」 . php.net . 2014年7月4日. 2014年7月7日閲覧。
- ^ 「アロー関数(PHPマニュアル)」 . php.net . 2021年1月25日閲覧。
- ^ Christian Seiler; Dmitry Stogov (2008年7月1日). 「Request for Comments: Lambda functions and closures」 . php.net . 2014年7月7日閲覧。
- ^ a b「PHP 5 オブジェクト参照」 . mjtsai.com . 2008年3月16日閲覧。
- ^ 「後方互換性のない変更」 . php-legacy-docs.zend.com . 2025年6月20日閲覧。
- ^ 「クラスとオブジェクト(PHP 5)」 PHPグループ。 2008年3月16日閲覧。
- ^ 「オブジェクトの複製」 PHPグループ。 2008年3月16日閲覧。
- ^ "Visibility (PHP Manual)" . theserverpages.com . 2005年5月19日. 2010年9月24日時点のオリジナルよりアーカイブ。 2010年8月26日閲覧。
- ^ 「PHP: 可視性 - マニュアル」 . www.php.net . 2025年11月19日閲覧。
- ^ 「コンピュータ言語はどのように機能するのか?」 2011年7月16日時点のオリジナルよりアーカイブ。 2009年11月4日閲覧。
- ^ Gilmore, W. Jason (2006-01-23). 『PHPとMySQL 5入門:初心者からプロまで』Apress. p. 43. ISBN 1-59059-552-1。
- ^ Julien Pauli、Nikita Popov、Anthony Ferrara。「PHP内部構造ブック」。PHP内部構造ブック。2025年1月21日時点のオリジナルよりアーカイブ。2025年1月21日閲覧
- ^ 「[投票] PHPディストリビューションへのZend Optimizer+の統合」news.php.net . 2013年3月8日閲覧。
- ^ 「代替PHPキャッシュ」 PHP.net 。 2013年11月15日時点のオリジナルよりアーカイブ。2013年9月21日閲覧。
- ^ 「私たちは98.5%(そして16%)です」『HipHop Virtual Machine』hhvm.com、2013年12月。 2014年2月23日閲覧。
- ^ 「PHP 5.6、7.0、7.1、7.2、7.3の決定版ベンチマーク(2019年)」 2019年1月14日。 2019年4月19日閲覧。
- ^ Krill, Paul (2017年9月20日). 「PHPはもう古い!FacebookのHHVMエンジンはHackに切り替え」 InfoWorld . 2019年2月6日閲覧。
- ^ 「GitHubでのHPHPcサポート削除のお知らせ」 . GitHub . 2013年5月24日閲覧。
- ^ 「PHPライセンス バージョン3.01」 。 2010年5月20日閲覧。
- ^ 「GPL非互換のフリーソフトウェアライセンス」。様々なライセンスとそれらに関するコメント。フリーソフトウェア財団。2011年1月3日閲覧。
- ^ 「PHP: 関数とメソッドの一覧 - マニュアル」 PHPグループ。 2015年1月14日閲覧。
- ^ "Introduction – Manual" . php.net . 2013年6月7日. 2013年6月13日閲覧。
- ^ Darryl Patterson (2004年8月5日). 「PHP DataObjectsでビジネスロジックを簡素化 — O'Reilly Media」 . ibm.com . 2014年12月16日時点のオリジナルよりアーカイブ。 2014年12月16日閲覧。
- ^ 「IBM — 米国」 。 2014年12月16日閲覧。
- ^ 「PHPデータベースのよくある5つの問題」 ibm.com 2006年8月1日2013年6月13日閲覧。
- ^ 「IBM Redbooks — IBMデータサーバー向けPHPアプリケーションの開発」redbooks.ibm.com . 2014年12月16日閲覧。
- ^ 「php[architect] Magazine – PHPプログラマーのためのジャーナル」www.phparch.com。
- ^ Krill, Paul (2005年10月19日). 「PHPが企業で普及、Javaとの競争に参入」 InfoWorld . 2014年7月13日時点のオリジナルよりアーカイブ。
- ^ "Cross Reference: /PHP_5_4/ext/standard/" . php.net . 2012年3月16日時点のオリジナルよりアーカイブ。 2014年12月16日閲覧。
- ^ 「カスタムPHP拡張機能の開発」 devnewz.com 2002年9月9日。2008年2月18日時点のオリジナルよりアーカイブ。2008年2月25日閲覧。
- ^ 「入門:PHPで何ができるのか?」PHPマニュアル。2009年2月16日時点のオリジナルよりアーカイブ。2009年3月5日閲覧。
- ^ 「Helicopter: PHP経由でParrot AR Droneを制御できるnode-ar-droneの移植版」 JoliCode、2019年1月11日。 2019年2月23日閲覧。
- ^ 「なぜZephirなのか?」 zephir-lang.com 2015年10月20日2015年12月14日閲覧。
- ^ 「PHPクレジット」 。 2018年12月16日閲覧。
- ^ 「PHPトレーニングとPHP認定資格でPHPを学ぶ」 www.zend.com . 2020年11月16日閲覧。
- ^ Walker, James (2021年12月13日). 「新しいPHP FoundationがPHPの将来にもたらす意味」 How -To Geek . 2023年11月26日閲覧。
- ^ 「PHPの新生活 – PHP Foundation | PhpStormブログ」 . JetBrainsブログ. 2021年11月22日. 2022年6月16日閲覧。
- ^ 「PHP Foundation:インパクトと透明性レポート2022」thephp.foundation . 2023年11月27日閲覧。
- ^ Pronskiy, Roman (2024年2月26日). 「PHP財団:インパクトと透明性レポート2023」 PHP財団. 2024年4月1日閲覧。
- ^ Pronskiy, Roman (2025年3月31日). 「PHP財団:インパクトと透明性レポート2023」 . PHP財団. 2025年8月19日閲覧。
- ^アンダーソン、ティム。「コア開発者への資金提供を目的としてPHP Foundationが設立」 www.theregister.com 。2023年12月5日閲覧。
- ^ 「PHP Foundation:PHPの新時代」JetBrainsブログ、JetBrains、2021年11月26日。 2025年10月6日閲覧。
- ^ Claburn, Thomas (2021年11月26日). 「PHP Foundationがオープンソース言語のサポートのために設立」 . The Register . 2025年10月6日閲覧。
- ^ "PHP" . Sovereign Tech Fund . 2024年5月26日閲覧。
- ^ a b「一般的なインストールの考慮事項」 . php.net . 2013年9月22日閲覧。
- ^ 「ニュースアーカイブ: PHP 5.3.3 リリース!」 . php.net . 2010-07-22.
- ^ 「FastCGI Process Manager (FPM)」 . php.net . 2013年9月22日閲覧。
- ^ 「コマンドラインの使い方:概要」 . php.net . 2021年3月21日時点のオリジナルよりアーカイブ。 2013年9月22日閲覧。
- ^ 「コマンドラインの使用法:他のSAPIとの違い」 . php.net . 2013年9月22日閲覧。
- ^ a b「一般的なインストールの考慮事項」 . php.net . 2013年9月22日閲覧。
- ^ 「PHP: Microsoft Windows上のApache 2.x」 . php.net . 2013年9月26日時点のオリジナルよりアーカイブ。2013年9月22日閲覧。
- ^ 「コマンドラインの使い方:概要」 . php.net . 2021年3月21日時点のオリジナルよりアーカイブ。 2013年9月22日閲覧。
- ^ 「PHP-GTK 2のインストール」 . php.net . 2013年12月12日時点のオリジナルよりアーカイブ。2013年9月22日閲覧。
- ^ Vinit Sharma. 「クラウドコンピューティングとは? | PHPをAWSに統合する方法」クラリオンテクノロジーズ2025年12月6日閲覧。
{{cite web}}: CS1 maint: url-status (リンク) - ^ 「AWS SDK for PHP」 . aws.amazon.com . 2014年3月6日閲覧。
- ^ 「Windows Azure SDK for PHP — Interoperability Bridges and Labs Center」 . interoperabilitybridges.com . 2014年3月20日時点のオリジナルよりアーカイブ。 2014年3月6日閲覧。
- ^ 「ランタイム設定:目次」 . php.net . 2013年9月22日閲覧。
- ^ 「php.ini ディレクティブ: php.ini ディレクティブのリスト」 . php.net . 2013年9月22日閲覧。
- ^ 「実行時設定:設定ファイル」 . PHP.net . 2013年9月22日閲覧。
- ^ "php.ini ディレクティブ: php.ini セクションのリスト" . PHP.net 。2013 年 9 月 22 日に取得。
- ^ 「実行時設定:設定項目を設定できる場所」 PHP.net . 2013年9月22日閲覧。
- ^ 「PHPマニュアル 画像処理とGD」 . php.net . 2011年4月9日閲覧。
- ^ 「PHP サーバーサイドスクリプト言語」インディアナ大学2007年4月4日. 2016年1月21日時点のオリジナルよりアーカイブ。 2008年2月25日閲覧。
- ^ 「JavaServer Pagesテクノロジー - JavaServer Pagesによるサーバー側動的コンテンツ作成方法の比較ホワイトペーパー」 Sun Microsystems . 2008年2月25日閲覧。
- ^ 「LAMPアプリケーションをチューニングする5つの簡単な方法」 IBM 2011年1月25日
- ^ 「PHPの核:拡張機能の構造」PHP.net。2013年9月26日時点のオリジナルよりアーカイブ。2013年9月22日閲覧。
- ^ 「PHPの核心:"counter"拡張モジュール - 継続的な例」PHP.net。2013年9月26日時点のオリジナルよりアーカイブ。 2013年9月22日閲覧。
- ^ 「拡張機能の作成 パート1:PHPとZendの紹介」Zend Technologies . 2005年3月1日. 2013年9月24日時点のオリジナルよりアーカイブ。2013年9月22日閲覧。
- ^ 「拡張機能の書き方 パートII:パラメータ、配列、ZVAL」 . Zend Technologies . 2005年6月6日. 2013年9月26日時点のオリジナルよりアーカイブ。 2013年9月22日閲覧。
- ^ 「拡張機能の書き方 パートII:パラメータ、配列、ZVAL(続)」 Zend Technologies . 2005年6月6日. 2013年9月26日時点のオリジナルよりアーカイブ。 2013年9月22日閲覧。
- ^ 「拡張機能の作成 パートIII: リソース」 . Zend Technologies . 2006年5月12日. 2013年9月26日時点のオリジナルよりアーカイブ。 2013年9月22日閲覧。
- ^ 「PHP拡張機能でC++クラスをラップする」 Zend Technologies . 2009年4月22日. 2013年9月20日時点のオリジナルよりアーカイブ。2013年9月22日閲覧。
- ^ 「PHPをC++で拡張する?」Stack Overflow。2013年9月22日閲覧。
- ^ 「C++コードを使ってPHPとやりとりするにはどうすればいいですか?」 Stack Overflow 。 2013年9月22日閲覧。
- ^ゴレモン、サラ (2006). PHPの拡張と埋め込み. サムズ. ISBN 978-0-672-32704-9。
- ^ 「リクエスト #46919: マルチスレッド」 . PHP.net . 2013年9月22日閲覧
- ^ "pthreads: はじめに (PHPマニュアル)" . PHP.net . 2013年9月22日閲覧。
- ^ "PECL :: Package :: pthreads" . pecl.php.net . 2014年2月9日閲覧。
- ^ "マニュアル:インストール要件#PHP" .メディアウィキ。 2010-01-25 。2010 年 2 月 26 日に取得。
PHP は MediaWiki が書かれているプログラミング言語です [...]
- ^ 「WordPressについて」 。 2010年2月26日閲覧。WordPress
は[...]PHPで構築されました。
- ^ Kempkens, Alex. 「Joomla! — ウェブサイトとアプリを構築するためのコンテンツ管理システム」
- ^ 「PHPとDrupal」 Drupal.org、2007年9月16日。2010年2月8日時点のオリジナルよりアーカイブ。2010年6月13日閲覧。
- ^ 「About」 . Moodle.org. 2010年1月11日時点のオリジナルよりアーカイブ。2009年12月20日閲覧。
- ^ 「SilverStripeのサーバー要件」 。 2014年11月28日時点のオリジナルよりアーカイブ。2014年10月13日閲覧。SilverStripe
にはPHP 5.3.2以上が必要です。
- ^ Ide, Andy (2013年1月31日). 「PHPはどんどん成長していく」 . 2013年4月1日閲覧。
- ^ 「ウェブサイトにおけるPHPバージョン4の使用統計と市場シェア、2025年12月」。w3techs.com 。
- ^ 「ウェブサイトにおけるPHPバージョン5の使用統計と市場シェア、2025年12月」。w3techs.com 。
- ^ 「ウェブサイトにおけるPHPバージョン7の使用統計と市場シェア、2025年12月」。w3techs.com 。
- ^ 「ウェブサイトにおけるPHPバージョン8の使用統計と市場シェア、2025年12月」。w3techs.com 。
- ^ 「National Vulnerability Database (NVD) 検索脆弱性統計」 。 2019年11月22日閲覧。
- ^ 「PHP関連の脆弱性(National Vulnerability Database)」 2012年7月5日. 2009年6月28日時点のオリジナルよりアーカイブ。 2013年4月1日閲覧。
- ^ 「開発者ミーティングノート、2005年11月」。
- ^ 「Taint mode decision, November 2007」 。2009年2月26日時点のオリジナルよりアーカイブ。
- ^ "PHP: rfc:taint" . wiki.php.net .
- ^ 「Hardened-PHP Project」 . 2008年8月15日. 2019年2月24日時点のオリジナルよりアーカイブ。2019年8月22日閲覧。
- ^ 「スナッフルパガスのドキュメント」。
- ^ 「セキュリティ:グローバルレジスタの使用」 . PHPマニュアル. PHP.net. 2013年9月27日時点のオリジナルよりアーカイブ。 2013年9月22日閲覧。
- ^ 「マジッククォート」 . PHPマニュアル. PHP.net. 2014年2月8日時点のオリジナルよりアーカイブ。2014年1月17日閲覧。
- ^ 「'engine'設定ディレクティブ」 . PHP: ランタイム設定. PHP.net . 2014年2月13日閲覧
- ^ 「PHPのGIF画像を使ったセキュリティエクスプロイト」 2007年6月22日。2013年9月27日時点のオリジナルよりアーカイブ。2013年9月22日閲覧。
- ^ 「GIF画像を使ったPHPのセキュリティエクスプロイト」 PHP Classesブログ。2007年6月20日。 2013年9月22日閲覧。
- ^ 「getimagesize() を通じて悪意のある PHP を渡す」 2007年6月4日. 2013年9月21日時点のオリジナルよりアーカイブ。 2013年9月22日閲覧。
- ^ 「「'enable_dl' 設定ディレクティブ」。PHP : ランタイム設定。PHP.net 。 2014年2月13日取得。
- ^ 「PHP関数リファレンス: dl()」 . PHP.net . 2013年9月22日閲覧。
- ^ 「私のホストはトロイの木馬を修正してくれません」。WebHosting Talk 。2013年9月22日閲覧。
- ^ Raz0r (2013年1月25日). 「Simple Machines Forum <= 2.0.3 管理者パスワードリセット」 . Raz0R.name — Webアプリケーションセキュリティ.
{{cite news}}: CS1 maint: 数値名: 著者リスト (リンク) - ^ニブルセキュリティ。「TYPO3-SA-2010-020、TYPO3-SA-2010-022の説明」。
- ^ "Криптостойкость и небезопасное сравнение" . ahack.ru (ロシア語)。 2017年7月4日のオリジナルからアーカイブ。
- ^ Krawczyk, Pawel (2013). 「Webアプリケーションに対する最も一般的な攻撃」 . IPSec.pl. 2015年4月15日時点のオリジナルよりアーカイブ。 2015年4月15日閲覧。
- ^ Krawczyk, Pawel (2013). 「では、最も重大なアプリケーションの欠陥とは? 新しいOWASP Top 10について」 . IPSec.pl . 2015年4月15日閲覧。
- ^ 「PHP: Rand – マニュアル」。
- ^ 「PHP: Mt_rand - マニュアル」。
- ^ 「PHP: Random_int – マニュアル」。
- ^ Argyros, George; Kiayias, Aggelos (2012年8月10日). 「パスワードを忘れた場合:PHPアプリケーションに対するランダムネス攻撃」 . usenix.org . USENIX . 2024年4月19日閲覧。
- ^ 「PHP 7.2~8.0のPHPサポート | PHP LTS | Zend by Perforce」 。 2024年5月23日閲覧。
- ^ 「Pagely PHP 長期サポートページ」 . Pagely . 2024年9月14日閲覧。
さらに読む
- ポール・フォード(2015年6月11日)「コードとは何か?」ブルームバーグ・ビジネスウィーク。PHP
について絶対に知っておくべき最低限のことは何ですか?