WindowsにXAMPP 7.4とWordPress 6.0をインストールする手順

|[../](https://qiita.com/taconana/items/3f5424f9abfc755772c2) |
|---|

WindowsにEclipseとPHPはインストール済みである。`pleiades-2022-06-php-win-64bit-jre_20220619.exe` になる。MySQLは以前から使用中のものを継続して使う。

- Eclipse 2022-06 (4.24)
- PHP 7.4.29
- MySQL 5.6.46

この環境に、XAMPP 7.4.29 と WordPress 6.0 をインストールして開発環境を整えたい。

- XAMPP 7.4.29 
- WordPress 6.0

## XAMPP 7.4.29のインストール

XAMPPは、https://www.apachefriends.org/jp/ からWindows向け「XAMPP 7.4.29 (PHP 7.4.29)」をダウンロードした。最新版は「XAMPP 8.1.6 (PHP 8.1.6)」のようだったが、既存のPHPのバージョンに合わせた。

`xampp-windows-x64-7.4.29-1-VC15-installer.exe` を実行した。コンポーネントからはMySQLを除外した。
![xampp-components.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39200/d518c4d9-3eda-d6c6-2ba0-857d6af5d01c.png)

インストール先は、Pleiades配下の C:\pleiades-xxx\xampp にした。インストールが終わるとXAMPP Control Panelが開く。Apacheのみを起動(start)してみた。
![xampp-control-panel.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39200/e6409557-2a2a-5fd0-f23c-cbf0a9d41408.png)

## WordPress 6.0のインストール

WordPressは、https://ja.wordpress.org/download/ の「WordPress 6.0 をダウンロード」から `wordpress-6.0-ja.zip` をダウンロードした。これを展開して、xampp配下の C:\pleiades-xxx\xampp\htdocs\wp に配置した。wordpressではなく、短い`wp`というフォルダにしてみた。今後は、workspaceを C:\pleiades-xxx\xampp\htdocs にする。

MySQLにWordPressのDBとユーザーを作成する。DB名「wp」、ユーザー「wpadmin」とした。
```
# mysql -uroot -p mysql
Enter password: ***
> create database wp;
> show databases;
> create user 'wpadmin'@'localhost' identified by 'xxx';     // wpadmin追加
> grant all privileges on wp.* TO 'wpadmin'@'localhost';     // wpadminの権限
> flush privileges;
> select user,host from user;
> exit;

# mysql -uwpadmin -p wp
Enter password: xxx
> show tables;
Empty set (0.00 sec)
```

## WordPress 6.0のセットアップ

Eclipse上でPHPビルトインサーバーを起動する。インストールしたwpも同期させておく。

プロジェクトエクスプローラから wp/wp-admin/index.php を選択して、サーバーで実行させると、ブラウザで http://localhost:8488/wp/wp-admin/setup-config.php が開く。順次入力して、ウィザードを進める。
```
データベース名			wp
ユーザー名				wpadmin		// MySQLのuser
パスワード				***			// MySQLのpassword
データベースのホスト名		localhost
テーブル接頭辞			wp_

サイトのタイトル	  		xxx.com
ユーザー名				taconana	// サイト管理者のID
パスワード				***			// サイト管理者のpassword
メールアドレス			xxx@xxx.com
```
「成功しました !」が出たら、先ほど設定したユーザー名とパスワードでログインする。
ダッシュボード (http://localhost:8488/wp/wp-admin/) が開く。
サイト (http://localhost:8488/wp/) を開くと、1羽の小鳥が飛ぶサンプルページが開く。

## wp-config.phpの作成
wp-config-sample.phpをコピーして`wp-config.php`を作成しておく。中ほどにデータベース名、ユーザー名、パスワードなどを埋め込む。また秘密鍵も生成して、埋め込んでおく。
```php:wp-config.php
<?php
/**
 * WordPress の基本設定
 *
 * このファイルは、インストール時に wp-config.php 作成ウィザードが利用します。
 * ウィザードを介さずにこのファイルを "wp-config.php" という名前でコピーして
 * 直接編集して値を入力してもかまいません。
 *
 * このファイルは、以下の設定を含みます。
 *
 * * データベース設定
 * * 秘密鍵
 * * データベーステーブル接頭辞
 * * ABSPATH
 *
 * @link https://ja.wordpress.org/support/article/editing-wp-config-php/
 *
 * @package WordPress
 */

// 注意:
// Windows の "メモ帳" でこのファイルを編集しないでください !
// 問題なく使えるテキストエディタ
// (http://wpdocs.osdn.jp/%E7%94%A8%E8%AA%9E%E9%9B%86#.E3.83.86.E3.82.AD.E3.82.B9.E3.83.88.E3.82.A8.E3.83.87.E3.82.A3.E3.82.BF 参照)
// を使用し、必ず UTF-8 の BOM なし (UTF-8N) で保存してください。

// ** データベース設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define( 'DB_NAME', 'wp' );						// 適宜変更する

/** データベースのユーザー名 */
define( 'DB_USER', 'wpadmin' );					// 適宜変更する

/** データベースのパスワード */
define( 'DB_PASSWORD', 'xxx' );					// 適宜変更すること

/** データベースのホスト名 */
define( 'DB_HOST', 'localhost' );

/** データベースのテーブルを作成する際のデータベースの文字セット */
define( 'DB_CHARSET', 'utf8' );

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define( 'DB_COLLATE', '' );

/**#@+
 * 認証用ユニークキー
 *
 * それぞれを異なるユニーク (一意) な文字列に変更してください。
 * {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org の秘密鍵サービス} で自動生成することもできます。
 * 後でいつでも変更して、既存のすべての cookie を無効にできます。これにより、すべてのユーザーを強制的に再ログインさせることになります。
 *
 * @since 2.6.0
 */
// 以下は、https://api.wordpress.org/secret-key/1.1/salt/ にアクセスして表示されるテキストをコピペする
define('AUTH_KEY',         'htUaS  DAjiw2($J&@5...');
define('SECURE_AUTH_KEY',  'VUC+|U*%IaPnQY|XMH&...');
define('LOGGED_IN_KEY',    '{{&NV[T2}DnR2!2U~7_...');
define('NONCE_KEY',        ']-vB+wEd_Ploo{Tf O4...');
define('AUTH_SALT',        'qt.La?1|Cpc7i?.so6r...');
define('SECURE_AUTH_SALT', ' l<^iY~P&#+0P<na]^I...');
define('LOGGED_IN_SALT',   'Lwn./_X+,9SMPLnIr!=...');
define('NONCE_SALT',       '_tw9,.EJ-bd,o*I5X%u...');

/**#@-*/

/**
 * WordPress データベーステーブルの接頭辞
 *
 * それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数の WordPress を
 * インストールすることができます。半角英数字と下線のみを使用してください。
 */
$table_prefix = 'wp_';

/**
 * 開発者へ: WordPress デバッグモード
 *
 * この値を true にすると、開発中に注意 (notice) を表示します。
 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
 *
 * その他のデバッグに利用できる定数についてはドキュメンテーションをご覧ください。
 *
 * @link https://ja.wordpress.org/support/article/debugging-in-wordpress/
 */
define( 'WP_DEBUG', false );

/* カスタム値は、この行と「編集が必要なのはここまでです」の行の間に追加してください。 */


/* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
	define( 'ABSPATH', __DIR__ . '/' );
}

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';

```
## WordPress のサイトヘルスに対応

ダッシュボードから「ツール -> サイトヘルス」を開いてみると、いくつかの致命的な問題とおすすめの改善が出ていた。対応しておきたい。

- REST API でエラーが発生しました
- サイトでループバックリクエストが完了できませんでした

この2つの問題は、不要なテーマを削除するといいらしい。保留としておく。

- 停止中のプラグインを削除してください
- 停止中のテーマを削除してください

この2つも、使わないプラグインやテーマを削除しておけというもの。とりあえず無視していい。たとえば「サイトには WordPress のデフォルトテーマ Twenty Twenty-Two と現在有効なテーマ Twenty Twenty-One を除いて、1個の停止中のテーマがあります。 サイトのセキュリティ向上のため、未使用のテーマの削除を検討してください」などと教えてくれる。

- 1つ以上の推奨モジュールが存在しません

詳細をみると「モジュール imagickとintlがインストールされていないか、無効化されている」と言っている。php.ini を修正した。intl はコメントを外すだけでよい。imagick は、行を追加した。
```
;extension=intl
extension=intl
extension=imagick
```
php_imagick.dll は、標準のPHPには含まれていないので、別途ダウンロードして所定の場所に配置する。私は、https://pecl.php.net/package/imagick からダウンロードして、DLLを C:\pleiades-xxx\xampp\php\ext に配置した。
- https://pecl.php.net/package/imagick にアクセス
- 「3.7.0 stable 2022-01-11 imagick-3.7.0.tgz」の隣にある「DLL」のリンクがWindows版である。紛らわしいので注意！
- PHP 7.4の「7.4 Thread Safe (TS) x64」をダウンロードする。NTS版やx86版を選ばないように！
- ダウンロードした php_imagick-3.7.0-7.4-ts-vc15-x64.zip を展開
- 展開した直下のフォルダに、`php_imagick.dll` がある
- それを、C:\pleiades-xxx\xampp\php\ext にコピーする

Elcipseを再起動して、サービスを再開させ、「1つ以上の推奨モジュールが存在しません」のメッセージは消えた。

## EclipseからPHPビルトインサーバーを使うとき
EclipseからPHPビルトインサーバーを起動して利用するとき、ポートが8488以外にならないように、server.xmlで固定しておく必要がある。サーバーを一旦削除して、新たにサーバーを追加するような操作を行うと、新たなポートが割り当てられる。なので、サーバーを開始する前にserver.xmlを編集してポート番号を戻しておく。WordPressは、DB内の各所でURIとして「localhost:ポート番号」を埋め込んだまま保持しているようだ。そのため、ポートが変わるとアクセスできなくなる。何か、他に効率的なやり方があるのかな。

|[../](https://qiita.com/taconana/items/3f5424f9abfc755772c2) |
|---|