📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
(同じ利用者による、間の20版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
RHELやSUSEの標準リポジトリにあるPHPのバージョンは古いことが多い。<br>
PHPは1995年にRasmus Lerdorfによって開発された主にWebアプリケーション開発のために設計されたプログラミング言語である。<br>
また、PHP 7以降は大幅な改良がされており、実行速度をはじめ様々なものがアップデートされているので、特別な事情がない限りはアップグレードした方がよい。<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>
Raspberry Piにおいて、ここでは、外部リポジトリとしてpackages.sury.org/phpを使用しているが、<br>
PHPは継続的に進化を続けており、現在のPHP 8系では、JITコンパイラの導入や型システムの強化等、パフォーマンスと開発体験の向上が図られている。<br>
このリポジトリを使用しても、常に最新版のPHPになる訳ではないことに注意すること。<br>
これにより、より堅牢で高速なアプリケーション開発が可能になっている。<br>
<br><br>
<br><br>


22行目: 51行目:
<br>
<br>
==== SUSE ====
==== SUSE ====
* PHP 7をインストールする場合 (パッケージ管理システムのみ)
===== PHP 7をインストールする場合 (パッケージ管理システムのみ) =====
*: PHPおよび主要なPHPモジュールをインストールする。
PHPおよび主要なPHPモジュールをインストールする。<br>
*: <code>sudo zypper install php7 php apache2-mod_php7 php7-curl php7-xmlreader php7-zip php7-pdo php7-gd php7-json php7-mysql php7-mbstring \</code>
sudo zypper install php7 php apache2-mod_php7 php7-curl php7-xmlreader php7-zip php7-pdo php7-gd php7-json php7-mysql php7-mbstring \
*: <code>                    php7-openssl php7-pecl php7-devel php7-fpm php7-fileinfo php7-phar</code>
                    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>
* PHP 8をインストールする場合
*: Develリポジトリの優先度を高く設定する。
** パッケージ管理システムからインストール
*: <pre>sudo zypper mr -p 90 PHP</pre>
**: <code>sudo zypper install php8 php8-devel php8-curl php8-zip php8-mbstring php8-fileinfo php8-gd \</code>
**: <code>                    php8-mysql php8-fpm apache2-mod_php8</code>
*: <br>
*: <br>
** リポジトリを追加してインストール
*: リポジトリを更新する。
**: まず、Develリポジトリを追加する。
*: Develリポジトリを初めて使用する場合、GPGキーを受け入れるように求められる。
**: SLE 15 SP5 : <code>sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/php/SLE_15_SP5/ PHP</code>
*: <pre>sudo zypper refresh</pre>
**: SLE 15 SP4 : <code>sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/php/SLE_15_SP4/ PHP</code>
*: <br>
**: SLE 15 SP3 : <code>sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/php/SLE_15_SP3/ PHP</code>
*: PHP 8をインストールする。
**: <br>
*: <syntaxhighlight lang="text">
**: Develリポジトリの優先度を高く設定する。
sudo zypper install php8 apache2-mod_php8 php8-curl php8-xmlreader php8-zip php8-pdo php8-gd php8-json php8-mysql php8-mbstring \
**: <code>sudo zypper mr -p 90 PHP</code>
                    php8-openssl php8-devel php8-fpm php8-fileinfo php8-phar
**: <br>
</syntaxhighlight>
**: リポジトリを更新する。
**: Develリポジトリを初めて使用する場合、GPGキーを受け入れるように求められる。
**: <code>sudo zypper refresh</code>
**: <br>
**: PHP 8をインストールする。
**: <code>sudo zypper install php8 apache2-mod_php8 php8-curl php8-xmlreader php8-zip php8-pdo php8-gd php8-json php8-mysql php8-mbstring \</code>
**: <code>                    php8-openssl php8-devel php8-fpm php8-fileinfo php8-phar</code>
<br>
<br>
SUSEのデフォルトのPHP-FPMは、<code>--with-fpm-user=wwwrun</code>オプションと<code>--with-fpm-group=www</code>オプションを付加してコンパイルされている。<br>
SUSEのデフォルトのPHP-FPMは、<code>--with-fpm-user=wwwrun</code> オプション と <code>--with-fpm-group=www</code> オプションを付加してコンパイルされている。<br>
ユーザ名がwwwrun、グループ名がwwwとなっている。<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-get install lsb-release
  sudo apt install lsb-release
<br>
<br>
packages.sury.orgからPHPのGPGキーを登録するため、以下のコマンドを実行する。<br>
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>
パッケージリストの更新を行う。<br>
# PHP 8.4
  sudo apt-get update
  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
<br>
   
外部リポジトリからインストール可能なPHPパッケージの情報を確認するため、以下のコマンドを実行する。<br>
  # PHP 8.2
  sudo apt-cache policy php
  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
<br>
PHP 7および主要なPHPモジュールをインストールするため、以下のコマンドを実行する。<br>
  # PHP 7.3
  sudo apt-get install php7.3 php7.3-fpm php7.3-mysql php7.3-mbstring php7.3-gd php7.3-zip php7.3-xml php7.3-common php7.3-curl php7.3-intl php-acpu
   
   
  # PHP 7.4
  # PHP 7.4
  sudo apt-get 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
  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ライブラリのインストール (非推奨) ====
複数のPHPのバージョンをインストールする場合、ソースコードからインストールする方が融通が利く。<br>
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-opcache --enable-phpdbg --enable-phpdbg-debug --enable-sockets --with-enchant \
               --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-imap --with-imap-ssl --with-kerberos --with-mhash \
               --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-pspell            \  # GNU ASpellを有効にする場合
               --with-valgrind          \  # Valgrind (メモリリーク検知機能) を有効にする場合
               --with-valgrind          \  # Valgrind (メモリリーク検知機能) を有効にする場合
               --with-mcrypt            \  # PHP 8.3以降は不要
              --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ファイルの配置するディレクトリのパス  例: /home/user/PHP/lib> \  # ユーザが指定する場合
               --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 libc-client2007e_suse libonig4 libpq5
  sudo zypper install libonig4  
                     libaspell15 # GNU ASpellを使用する場合
                    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>