WordPressサイトをセットアップする際に、PHPの環境が正しく構成されていることを確認することは非常に重要です。以下のPHPスクリプトは、WordPressが要求するPHPバージョン、必須モジュール、リライト設定、ディレクトリの書き込み権限、そしてデータベース接続をチェックするためのサンプルコードです。
スクリプトの使い方
- ファイルを作成するwp-env-check.phpなどの名前で新しいPHPファイルを作成し、以下のコードをそのファイルに貼り付けます。
- サーバーにアップロードする
 作成したファイルをWordPressサイトのルートディレクトリにアップロードします。
- ブラウザで実行するhttp://yourdomain.com/wp-env-check.phpにアクセスし、チェック結果を確認します。
チェック内容の詳細
- PHPバージョンのチェック
 WordPressは、PHP 7.4以上を要求します。スクリプトは現在のPHPバージョンを確認し、適合しているかどうかを出力します。
- 必須モジュールのチェック
 WordPressの動作に必要なPHPモジュール(mbstring,curl,mysqli,json,xml,zip,gd,openssl,dom)がロードされているかを確認します。
- Rewriteと.htaccessのチェック
 WordPressのパーマリンク機能を使用するために、mod_rewriteと.htaccessが正しく動作しているかどうかをテストします。スクリプトは、自身にリクエストを送信して確認します。
- ディレクトリの書き込み権限のチェック
 WordPressは一部のディレクトリ(例:wp-contentやwp-content/uploads)に書き込み権限が必要です。これらのディレクトリが書き込み可能であるかをチェックします。
- MySQL接続チェック(任意)
 データベース接続をテストする部分です。ホスト名、ユーザー名、パスワード、データベース名を設定することで、MySQLに接続できるかどうかを確認します。
スクリプト
<?php
// PHPバージョンのチェック
echo "<h2>PHP Version Check</h2>";
if (version_compare(PHP_VERSION, '7.4.0') >= 0) {
    echo "PHP version is " . PHP_VERSION . " - OK<br>";
} else {
    echo "PHP version is " . PHP_VERSION . " - WordPress requires 7.4 or higher<br>";
}
// 必須モジュールのチェック
$required_extensions = ['mbstring', 'curl', 'mysqli', 'json', 'xml', 'zip', 'gd', 'openssl', 'dom'];
echo "<h2>PHP Extensions Check</h2>";
foreach ($required_extensions as $extension) {
    if (extension_loaded($extension)) {
        echo "$extension is loaded - OK<br>";
    } else {
        echo "$extension is not loaded - WordPress requires this extension<br>";
    }
}
// Rewriteと.htaccessのテスト
echo "<h2>Rewrite and .htaccess Functionality Check</h2>";
if (isset($_GET['rewrite_test']) && $_GET['rewrite_test'] === 'success') {
    echo "Rewrite and .htaccess are working correctly - OK<br>";
} else {
    $url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?rewrite_test=success';
    $response = file_get_contents($url);
    if (strpos($response, 'Rewrite and .htaccess are working correctly') !== false) {
        echo "Rewrite and .htaccess are working correctly - OK<br>";
    } else {
        echo "Rewrite or .htaccess may not be functioning as expected - Check server settings<br>";
    }
}
// ディレクトリの書き込み権限のチェック
$directories = ['wp-content', 'wp-content/uploads'];
echo "<h2>Directory Write Permissions Check</h2>";
foreach ($directories as $directory) {
    if (is_writable($directory)) {
        echo "$directory is writable - OK<br>";
    } else {
        echo "$directory is not writable - Please set write permissions for this directory<br>";
    }
}
// MySQL接続チェック(任意)
echo "<h2>Database Connection Check</h2>";
$db_host = 'localhost';
$db_user = 'user';
$db_pass = 'password';
$db_name = 'dbname';
$connection = @new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($connection->connect_error) {
    echo "Database connection failed: " . $connection->connect_error . "<br>";
} else {
    echo "Database connection successful - OK<br>";
    $connection->close();
}
?>注意事項
- データベース接続情報: スクリプト内の$db_host,$db_user,$db_pass,$db_nameは、ご利用の環境に合わせて変更してください。
- セキュリティ: 使用後は必ずファイルを削除するかアクセス制限をかけてください。サーバーの環境情報が漏れるのを防ぐためです。
以上で、WordPressの環境が正しく設定されているかどうかの確認が可能です。