株式会社エスロジカル
株式会社エスロジカル
SSL証明書(DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

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 接続・セキュリティ設定まで順を追って解説します。


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)

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

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

sudo mkdir -p /var/log/php
sudo chown www-data:www-data /var/log/php

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');
}

セッション固定攻撃や 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 化してください。


ドメインごとのバーチャルホストを設定する例です。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

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

/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 保護


PHP サイトの本番運用では SSL証明書による HTTPS 化が必須です。 セッション Cookie の Secure 属性や通信の暗号化、Google のセキュリティ警告回避など、HTTPS 化のメリットは多数あります。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、 RapidSSL 3,960円/1年(税込)〜で 2009年から 16年以上販売しています。 審査サポート・インストール代行あり。平日 9:00〜18:00 のメールサポート付きです。

SSL証明書の購入はこちら / 購入から発行までの流れ / インストール代行サービス


← 技術ドキュメント一覧へ戻る