HOME > 技術ドキュメント > PHP + Apache 設定(Ubuntu 24.04)
PHP + Apache 設定(Ubuntu 24.04 LTS)
PHP は Web 開発で最も広く使われているサーバーサイド言語の一つです。
Apache と組み合わせた LAMP 構成(Linux + Apache + MySQL + PHP)は、WordPress をはじめとする多くの Web システムの基盤となっています。
この記事では Ubuntu 24.04 LTS への PHP インストールから、Apache 連携・MySQL 接続・セキュリティ設定まで順を追って解説します。
1. PHP のインストール
Ubuntu 24.04 のリポジトリには PHP 8.3 が含まれています。Apache と連携するモジュールも合わせてインストールします。
sudo apt update
sudo apt install -y php libapache2-mod-php php-mysql php-cli php-common \
php-mbstring php-xml php-curl php-zip php-intl
# バージョン確認
php --version
# PHP 8.3.x (cli)
主な拡張パッケージの役割:
| パッケージ | 用途 |
|---|---|
libapache2-mod-php |
Apache の mod_php モジュール(PHP を Apache 内で処理) |
php-mysql |
MySQL/MariaDB への PDO 接続 |
php-mbstring |
日本語などマルチバイト文字列処理 |
php-xml |
XML 処理・SimpleXML |
php-curl |
外部 API との HTTP 通信 |
php-intl |
国際化・文字コード処理(ICU) |
2. Apache の再起動と動作確認
libapache2-mod-php をインストールすると mod_php が自動的に有効になります。Apache を再起動して反映します。
sudo systemctl restart apache2 # mod_php が有効か確認 php -m | grep -i mysql # pdo_mysql # mysqlnd
テスト用 PHP ファイルを作成して動作確認します:
# テストファイルを作成 sudo sh -c 'echo "<?php phpinfo(); ?>" > /var/www/html/info.php'
ブラウザで http://サーバーのIPアドレス/info.php を開き、PHP の設定情報ページが表示されれば成功です。
確認後は必ずこのファイルを削除してください(サーバー情報が外部に漏れます)。
sudo rm /var/www/html/info.php
3. php.ini の重要設定
Apache から使われる php.ini は /etc/php/8.3/apache2/php.ini です。
sudo nano /etc/php/8.3/apache2/php.ini
セキュリティ関連
; PHP のバージョン情報をレスポンスヘッダーに含めない expose_php = Off ; エラーを画面に表示しない(本番環境) display_errors = Off ; エラーをログに記録する log_errors = On error_log = /var/log/php/error.log
アップロード・処理時間
; ファイルアップロードの最大サイズ upload_max_filesize = 20M post_max_size = 25M ; スクリプトの最大実行時間(秒) max_execution_time = 30 ; メモリの最大使用量 memory_limit = 256M
タイムゾーン
date.timezone = Asia/Tokyo
設定変更後は Apache を再起動します:
sudo systemctl restart apache2
4. PHP エラーログディレクトリの作成
sudo mkdir -p /var/log/php sudo chown www-data:www-data /var/log/php
5. MySQL への接続(PDO)
PDO を使ったデータベース接続の実装例です。プリペアドステートメントで SQL インジェクションを防ぎます。
<?php
// 接続情報は設定ファイルや環境変数で管理する
define('DB_HOST', '127.0.0.1');
define('DB_NAME', 'appdb');
define('DB_USER', 'appuser');
define('DB_PASS', 'パスワード');
function getDbConnection(): PDO {
static $pdo = null;
if ($pdo === null) {
$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8mb4';
$pdo = new PDO($dsn, DB_USER, DB_PASS, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]);
}
return $pdo;
}
// 使用例
$pdo = getDbConnection();
$stmt = $pdo->prepare('SELECT id, name, email FROM users WHERE id = :id');
$stmt->execute([':id' => (int)$_GET['id']]);
$user = $stmt->fetch();
if ($user) {
// XSS 対策:必ず htmlspecialchars を通す
echo htmlspecialchars($user['name'], ENT_QUOTES, 'UTF-8');
}
6. セッションのセキュリティ設定
セッション固定攻撃や XSS によるセッションハイジャックを防ぐ設定です。
<?php
// セッション開始前に設定する
ini_set('session.cookie_httponly', '1'); // JS からアクセス不可
ini_set('session.cookie_secure', '1'); // HTTPS のみ送信
ini_set('session.cookie_samesite', 'Lax'); // CSRF 対策
ini_set('session.use_strict_mode', '1'); // セッション固定攻撃対策
session_start();
// ログイン後はセッション ID を再生成する
session_regenerate_id(true);
cookie_secure = 1 を有効にするには HTTPS(SSL証明書)が必須です。
本番環境では必ず HTTPS 化してください。
7. バーチャルホスト設定(PHP サイト用)
ドメインごとのバーチャルホストを設定する例です。Apache インストール記事の設定と組み合わせて使います。
sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot /var/www/example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/example.com.crt
SSLCertificateKeyFile /etc/ssl/private/example.com.key
<Directory /var/www/example.com>
Options -Indexes
AllowOverride All
Require all granted
</Directory>
# PHP の設定をバーチャルホスト単位で上書きする場合
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_admin_value display_errors Off
php_admin_value log_errors On
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost>
sudo a2ensite example.com.conf sudo systemctl reload apache2
8. Composer(PHP パッケージマネージャー)
PHP のパッケージ管理には Composer を使います。
# Composer のインストール curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer # バージョン確認 composer --version # パッケージのインストール例(Slim Framework) composer require slim/slim slim/psr7
9. 主な設定ファイルの場所
/etc/php/8.3/apache2/php.ini |
Apache 用 php.ini |
/etc/php/8.3/cli/php.ini |
CLI(コマンドライン)用 php.ini |
/etc/php/8.3/mods-available/ |
拡張モジュール設定 |
/var/log/apache2/error.log |
Apache エラーログ(PHP エラーも含む) |
/var/log/php/error.log |
PHP 専用エラーログ(設定した場合) |
関連ドキュメント
MySQL インストール・初期設定(Ubuntu 24.04) — MySQL インストール、ユーザー・DB 作成、PHP PDO 接続
Apache インストール(Ubuntu 24.04) — apt によるインストール、SSL 有効化、バーチャルホスト設定
UFW・Fail2ban 設定(Ubuntu 24.04) — ファイアウォール設定、SSH・Apache 保護
SSL証明書で PHP サイトを HTTPS 化する
PHP サイトの本番運用では SSL証明書による HTTPS 化が必須です。
セッション Cookie の Secure 属性や通信の暗号化、Google のセキュリティ警告回避など、HTTPS 化のメリットは多数あります。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、
RapidSSL 3,960円/1年(税込)〜で 2009年から 16年以上販売しています。
審査サポート・インストール代行あり。平日 9:00〜18:00 のメールサポート付きです。
SSL証明書の購入はこちら / 購入から発行までの流れ / インストール代行サービス
