📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の20版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
PHPは1995年にRasmus Lerdorfによって開発された主にWebアプリケーション開発のために設計されたプログラミング言語である。<br> | |||
当初は「Personal Home Page」の略称であったが、現在は「PHP: Hypertext Preprocessor」という再帰的な頭字語として知られている。<br> | |||
<br> | |||
PHPの最も重要な特徴は、HTMLに直接埋め込むことができることである。<br> | |||
<syntaxhighlight lang="html"> | |||
<html> | |||
<body> | |||
<?php | |||
echo "Hello, World!"; | |||
?> | |||
</body> | |||
</html> | |||
</syntaxhighlight> | |||
<br> | |||
また、PHPはサーバサイドで動作する言語である。<br> | |||
つまり、Webブラウザからリクエストが来る時、サーバ上でPHPコードが実行されてその結果生成されたHTMLがWebブラウザに送信される。<br> | |||
この特性により、データベース操作やファイル処理等、サーバ側での複雑な処理を実現できる。<br> | |||
<br> | |||
PHPの強みとして、豊富な標準ライブラリがある。<br> | |||
データベース接続、文字列処理、ファイル操作、画像処理等、Web開発に必要な機能の多くが標準で提供されている。<br> | |||
特にMySQL等のデータベースとの連携が容易であり、多くのWebサイトやアプリケーションの開発に利用されている。<br> | |||
<br> | |||
フレームワークの面では、LaravelやSymfonyといった強力なフレームワークが存在しており、より効率的な開発を可能にしている。<br> | |||
これらのフレームワークは、セキュリティ、パフォーマンス、保守性等の面で優れた機能を提供する。<br> | |||
<br> | |||
PHPの学習曲線は比較的緩やかで、初心者にも取り組みやすい言語である。<br> | |||
基本的な文法は他の主要なプログラミング言語と似ており、特にC言語やJavaの経験がある方には馴染みやすい。<br> | |||
<br> | |||
セキュリティに関しては、最新のPHPバージョンでは多くの改善が行われている。<br> | |||
ただし、開発者自身がセキュリティベストプラクティスを理解して、適切に実装することが重要である。<br> | |||
例えばSQLインジェクションやクロスサイトスクリプティング (XSS) への対策は、必須の知識となる。<br> | |||
<br> | <br> | ||
PHPは継続的に進化を続けており、現在のPHP 8系では、JITコンパイラの導入や型システムの強化等、パフォーマンスと開発体験の向上が図られている。<br> | |||
これにより、より堅牢で高速なアプリケーション開発が可能になっている。<br> | |||
<br><br> | <br><br> | ||
| 22行目: | 51行目: | ||
<br> | <br> | ||
==== SUSE ==== | ==== SUSE ==== | ||
===== PHP 7をインストールする場合 (パッケージ管理システムのみ) ===== | |||
PHPおよび主要なPHPモジュールをインストールする。<br> | |||
sudo zypper install php7 php apache2-mod_php7 php7-curl php7-xmlreader php7-zip php7-pdo php7-gd php7-json php7-mysql php7-mbstring \ | |||
php7-openssl php7-pecl php7-devel php7-fpm php7-fileinfo php7-phar | |||
<br> | |||
===== PHP 8をインストールする場合 ===== | |||
* パッケージ管理システムからインストール | |||
*: <syntaxhighlight lang="text"> | |||
sudo zypper install php8 php8-devel php8-curl php8-zip php8-mbstring php8-fileinfo php8-gd \ | |||
php8-mysql php8-fpm apache2-mod_php8 | |||
</syntaxhighlight> | |||
*: <br> | |||
* リポジトリを追加してインストール | |||
*: まず、Develリポジトリを追加する。 | |||
*: <syntaxhighlight lang="text"> | |||
# SLE 15 SP7 〜 SLE 16 | |||
sudo zypper ar 'http://download.opensuse.org/repositories/devel:/languages:/php/$releasever/' PHP | |||
# SLE 15 SP6 | |||
sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/php/SLE_15_SP6/ PHP | |||
# SLE 15 SP5 | |||
sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/php/SLE_15_SP5/ PHP | |||
# openSUSE Leap 16.0 | |||
sudo zypper ar 'http://download.opensuse.org/repositories/devel:/languages:/php/$releasever/' PHP | |||
# openSUSE Leap 15.6 | |||
sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/php/openSUSE_Leap_15.6/ PHP | |||
</syntaxhighlight> | |||
*: <br> | *: <br> | ||
* | *: Develリポジトリの優先度を高く設定する。 | ||
*: <pre>sudo zypper mr -p 90 PHP</pre> | |||
*: <br> | *: <br> | ||
*: リポジトリを更新する。 | |||
*: Develリポジトリを初めて使用する場合、GPGキーを受け入れるように求められる。 | |||
*: <pre>sudo zypper refresh</pre> | |||
*: <br> | |||
*: PHP 8をインストールする。 | |||
*: <syntaxhighlight lang="text"> | |||
sudo zypper install php8 apache2-mod_php8 php8-curl php8-xmlreader php8-zip php8-pdo php8-gd php8-json php8-mysql php8-mbstring \ | |||
php8-openssl php8-devel php8-fpm php8-fileinfo php8-phar | |||
</syntaxhighlight> | |||
<br> | <br> | ||
SUSEのデフォルトのPHP-FPMは、<code>--with-fpm-user=wwwrun</code> | SUSEのデフォルトのPHP-FPMは、<code>--with-fpm-user=wwwrun</code> オプション と <code>--with-fpm-group=www</code> オプションを付加してコンパイルされている。<br> | ||
<u>したがって、ユーザ名がwwwrun、グループ名がwwwであることに注意する。</u><br> | |||
<br> | <br> | ||
==== Raspberry Pi ==== | ==== Raspberry Pi ==== | ||
===== 標準リポジトリ ===== | |||
パッケージリストの更新を行う。<br> | |||
sudo apt update | |||
<br> | |||
外部リポジトリからインストール可能なPHPパッケージの情報を確認する。<br> | |||
sudo apt-cache policy php | |||
<br> | |||
PHPおよび主要なPHPモジュールをインストールする。<br> | |||
# PHP 8 (Trixie) | |||
sudo apt install php8.4 php8.4-cli php8.4-mysql php8.4-mbstring php8.4-gd php8.4-zip php8.4-xml php8.4-common php8.4-curl php8.4-intl | |||
# PHP 8 (Bookworm) | |||
sudo apt install php8.2 php8.2-cli php8.2-mysql php8.2-mbstring php8.2-gd php8.2-zip php8.2-xml php8.2-common php8.2-curl php8.2-intl | |||
# PHP 7 (Bullseye) | |||
sudo apt install php7.4 php7.4-cli php7.4-mysql php7.4-mbstring php7.4-gd php7.4-zip php7.4-xml php7.4-common php7.4-curl php7.4-intl | |||
<br> | |||
===== packages.sury.orgリポジトリの使用 ===== | |||
packages.sury.orgリポジトリとは、Ondřej Surý氏が管理する非公式のPHPパッケージリポジトリである。<br> | |||
<br> | |||
* Debian / Ubuntu / Raspberry Pi OS向けに、最新版のPHPや複数バージョンのPHPを提供 | |||
* 公式リポジトリよりも新しいバージョンやサポート期間が終了したバージョンも利用可能 | |||
* PHP関連の拡張モジュールも豊富に提供 | |||
<br> | |||
公式リポジトリに含まれていない新しいPHPバージョンが必要な場合、複数のPHPバージョンを共存させる場合、特定のバージョンのPHPが必要な場合には、packages.sury.orgの利用が有効である。<br> | |||
<br> | |||
まず、lsb-releaseをインストールする。<br> | まず、lsb-releaseをインストールする。<br> | ||
sudo apt | sudo apt install lsb-release | ||
<br> | <br> | ||
packages.sury. | packages.sury.orgからPHPのGPGキーを登録する。<br> | ||
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add - | wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add - | ||
<br> | <br> | ||
| 63行目: | 135行目: | ||
echo "deb https://packages.sury.org/php/ `lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/php.list | echo "deb https://packages.sury.org/php/ `lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/php.list | ||
<br> | <br> | ||
# PHP 8.4 | |||
sudo apt- | sudo apt install php8.4 php8.4-cli php8.4-mysql php8.4-mbstring php8.4-gd php8.4-zip php8.4-xml php8.4-common php8.4-curl php8.4-intl | ||
# PHP 8.2 | |||
sudo apt install php8.2 php8.2-cli php8.2-mysql php8.2-mbstring php8.2-gd php8.2-zip php8.2-xml php8.2-common php8.2-curl php8.2-intl | |||
# PHP | |||
sudo apt | |||
# PHP 7.4 | # PHP 7.4 | ||
sudo apt | sudo apt install php7.4 php7.4-cli php7.4-mysql php7.4-mbstring php7.4-gd php7.4-zip php7.4-xml php7.4-common php7.4-curl php7.4-intl | ||
<br><br> | <br><br> | ||
== PHPのインストール (ソースコードからインストールする場合) == | == PHPのインストール (ソースコードからインストールする場合) == | ||
==== | ==== c-clientライブラリのインストール (非推奨) ==== | ||
c-clientライブラリのビルドに必要なライブラリをインストールする。<br> | |||
# RHEL | |||
sudo dnf install make gcc openssl-devel pam-devel krb5-devel libksba-devel | |||
# SUSE | |||
sudo zypper install make gcc openssl-devel pam-devel krb5-devel libksba-devel | |||
<br> | |||
c-clientライブラリのソースコードをダウンロードする。<br> | |||
git clone https://github.com/uw-imap/imap | |||
cd imap | |||
<br> | |||
c-clientライブラリをビルドおよびインストールする。<br> | |||
# OpenSSLをサポートする場合、かつ、PAMモジュールを使用する場合 | |||
make -j $(nproc) lnp SSLTYPE=unix | |||
make install | |||
# OpenSSLをサポートしない場合、かつ、PAMモジュールを使用する場合 | |||
make -j $(nproc) lnp | |||
make install | |||
# OpenSSLをサポートしない場合、かつ、PAMモジュールを使用しない場合 | |||
make -j $(nproc) | |||
make install | |||
<br> | |||
c-clientライブラリのシンボリックリンクを作成する。<br> | |||
ln -s /<IMAPのインストールディレクトリ>/lib/c-client.a \ | |||
/<IMAPのインストールディレクトリ>/lib/libc-client.a | |||
<br> | |||
~/.profileファイル等に、c-clientライブラリのパスを設定する。<br> | |||
vi ~/.profile | |||
<br> | |||
<syntaxhighlight lang="sh"> | |||
# ~/.profileファイル | |||
export LD_LIBRARY_PATH="/<c-clientライブラリのインストールディレクトリ>/lib:$LD_LIBRARY_PATH" | |||
export PKG_CONFIG_PATH="$(pkg-config --variable pc_path pkg-config)" | |||
export PKG_CONFIG_PATH="/<c-clientライブラリのインストールディレクトリ>/lib/pkgconfig:${PKG_CONFIG_PATH}" | |||
</syntaxhighlight> | |||
<br> | |||
==== PHPのインストール ==== | |||
RHELやSUSEの標準リポジトリにあるPHPのバージョンは古いことが多い。<br> | |||
また、PHP 7以降は大幅な改良がされており、実行速度をはじめ様々なものがアップデートされているので、特別な事情がない限りはアップグレードした方がよい。<br> | |||
<br> | |||
Raspberry Piにおいて、ここでは、外部リポジトリとしてpackages.sury.org/phpを使用しているが、<br> | |||
このリポジトリを使用しても、常に最新版のPHPになる訳ではないことに注意すること。<br> | |||
<br> | |||
また、複数のPHPのバージョンをインストールする場合、ソースコードからインストールする方が融通が利く。<br> | |||
<br> | <br> | ||
PHPのビルドに必要なライブラリをインストールする。<br> | PHPのビルドに必要なライブラリをインストールする。<br> | ||
| 86行目: | 202行目: | ||
libjpeg62-devel libpng16-devel libwebp-devel libavif-devel libffi-devel \ | libjpeg62-devel libpng16-devel libwebp-devel libavif-devel libffi-devel \ | ||
libXpm-devel libXft-devel libxslt-devel oniguruma-devel libsodium-devel libtidy-devel \ | libXpm-devel libXft-devel libxslt-devel oniguruma-devel libsodium-devel libtidy-devel \ | ||
krb5-server krb5-devel imap imap-devel cyrus-sasl-devel | krb5-server krb5-devel imap imap-devel cyrus-sasl-devel \ | ||
libedit-devel libcapstone-devel libxslt-devel argon2-devel icu libicu-devel \ | libedit-devel libcapstone-devel libxslt-devel argon2-devel icu libicu-devel \ | ||
systemd-devel \ | systemd-devel \ | ||
| 97行目: | 213行目: | ||
lmdb-devel \ # BtreeベースのDBMSを使用する場合 | lmdb-devel \ # BtreeベースのDBMSを使用する場合 | ||
postgresql-devel # PostgreSQLを使用する場合 | postgresql-devel # PostgreSQLを使用する場合 | ||
libfbclient-devel # Firebirdを使用する場合 | |||
valgrind-devel # Valgrind (メモリリーク検知機能) を有効にする場合 | valgrind-devel # Valgrind (メモリリーク検知機能) を有効にする場合 | ||
aspell-devel # GNU ASpellを使用する場合 | aspell-devel # GNU ASpellを使用する場合 | ||
| 114行目: | 231行目: | ||
--enable-bcmath --enable-calendar --enable-cgi --enable-cli --enable-exif --enable-ftp --enable-fpm \ | --enable-bcmath --enable-calendar --enable-cgi --enable-cli --enable-exif --enable-ftp --enable-fpm \ | ||
--enable-gd --enable-gd-jis-conv --enable-inifile --enable-intl --enable-mbregex --enable-mbstring \ | --enable-gd --enable-gd-jis-conv --enable-inifile --enable-intl --enable-mbregex --enable-mbstring \ | ||
--enable-mysqlnd | --enable-mysqlnd --enable-phpdbg --enable-phpdbg-debug --enable-sockets --with-enchant \ | ||
--enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-shmop --enable-soap --enable-zts \ | --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-shmop --enable-soap --enable-zts \ | ||
--enable-opcache \ # PHP 8.4以前 | |||
--with-curl --with-expat -with-freetype --with-gettext --with-gmp --with-iconv --with-jpeg --with-avif --with-ffi \ | --with-curl --with-expat -with-freetype --with-gettext --with-gmp --with-iconv --with-jpeg --with-avif --with-ffi \ | ||
--with-openssl | --with-openssl --with-mhash \ | ||
--with-readline --with-sodium --with-tidy --with-xpm \ | --with-readline --with-sodium --with-tidy --with-xpm \ | ||
--with-zlib --with-zip --with-libxml --with-xsl --with-ldap --with-pic \ | --with-zlib --with-zip --with-libxml --with-xsl --with-ldap --with-pic \ | ||
| 128行目: | 246行目: | ||
--with-pdo-pgsql \ # PostgresSQLを使用する場合 | --with-pdo-pgsql \ # PostgresSQLを使用する場合 | ||
--with-lmdb \ # BtreeベースのDBMSを使用する場合 | --with-lmdb \ # BtreeベースのDBMSを使用する場合 | ||
--with-pdo-firebird \ # Firebirdを使用する場合 | |||
--with-pear \ | --with-pear \ | ||
--with-valgrind \ # Valgrind (メモリリーク検知機能) を有効にする場合 | --with-valgrind \ # Valgrind (メモリリーク検知機能) を有効にする場合 | ||
--with-mcrypt \ # PHP | --with-imap-ssl \ # PHP 8.4以降は不要 | ||
--with-kerberos \ # PHP 8.4以降は不要 | |||
--with-pspell \ # PHP 8.4以前 : GNU ASpellを有効にする場合 | |||
--with-imap \ # SUSE 15.5以前 (IMAPライブラリを使用する場合) | |||
--without-imap \ # PHP 8.4以降は不要 | |||
# Composer経由で利用できるメールライブラリが多数存在するため、システムのIMAPライブラリは不要 | |||
--with-mcrypt \ # PHP 7.2以降は削除されたため不要 | |||
--with-libdir=lib64 \ | --with-libdir=lib64 \ | ||
--with-apxs2=/<Apacheのインストールディレクトリ>/bin/apxs \ | --with-apxs2=/<Apacheのインストールディレクトリ>/bin/apxs \ | ||
--with-config-file-path=<php.iniファイルの配置するディレクトリのパス 例: / | --with-config-file-path=<php.iniファイルの配置するディレクトリのパス 例: /opt/PHP/etc> \ # ユーザが指定する場合 | ||
--with-fpm-user=<PHP-FPMを実行するユーザ名> \ # オプション | --with-fpm-user=<PHP-FPMを実行するユーザ名> \ # オプション | ||
--with-fpm-group=<PHP-FPMを実行するグループ名> # オプション | --with-fpm-group=<PHP-FPMを実行するグループ名> # オプション | ||
| 143行目: | 267行目: | ||
PHPの実行に必要なライブラリをインストールする。<br> | PHPの実行に必要なライブラリをインストールする。<br> | ||
# SUSE | # SUSE | ||
sudo zypper install | sudo zypper install libonig4 | ||
libaspell15 | libpq5 # PostgresSQLを使用する場合 | ||
libaspell15 # GNU ASpellを使用する場合 | |||
libc-client2007e_suse # SUSE 15.5以前 | |||
<br> | <br> | ||
~/.profileファイル等に、環境変数<code>PATH</code>を追記する。<br> | ~/.profileファイル等に、環境変数<code>PATH</code>を追記する。<br> | ||
| 155行目: | 282行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== Apache2を使用する場合 ==== | ==== Apache2を使用する場合 ==== | ||
Apache2を使用する場合、Apache2の設定ファイルであるhttpd.confファイルを編集して、phpファイルを実行できるように設定する。<br> | Apache2を使用する場合、Apache2の設定ファイルであるhttpd.confファイルを編集して、phpファイルを実行できるように設定する。<br> | ||
| 381行目: | 509行目: | ||
PHP7をインストールする前に、以下のコマンドを実行してlibargon2をインストールする。<br> | PHP7をインストールする前に、以下のコマンドを実行してlibargon2をインストールする。<br> | ||
sudo dnf --disablerepo=* --enablerepo=epel install libargon2 | sudo dnf --disablerepo=* --enablerepo=epel install libargon2 | ||
<br><br> | |||
== php.iniファイルのパス == | |||
phpコマンドの-i / --iniオプションを付加する。<br> | |||
php -i | grep php.ini または php --ini | grep php.ini | |||
# 出力例 | |||
Configuration File (php.ini) Path => /home/user/InstallSoftware/PHP/PHP_8_3/lib | |||
Loaded Configuration File => /home/user/InstallSoftware/PHP/PHP_8_3/lib/php.ini | |||
<br> | |||
phpinfo関数を使用する。<br> | |||
php -r "echo phpinfo();" | grep "php.ini" | |||
# 出力例 | |||
Configuration File (php.ini) Path => /home/user/InstallSoftware/PHP/PHP_8_3/lib | |||
Loaded Configuration File => /home/user/InstallSoftware/PHP/PHP_8_3/lib/php.ini | |||
<br> | |||
<br><br> | <br><br> | ||