XAMPPでPEAR::DBのインストールができない(解決済み)

Windows10に入れたXAMPPでPHPMySQLの勉強中なのだけど、教科書に載っているPEAR::DBのインストールでつまづきました。

教科書には「WindowsPHPにはPEARはインストールされていない」という記述がみられるのだけど、XAMPP7.2.7ではデフォルトでPEAR入っているみたいです。

Tar.phpのバグ?

で、PEAR DB入れようとしたらこういうエラーが

Fatal error: Cannnot use result of built-in function in write content in ... Tar.php on 639

ググっていたら次のサイトを見つけたのでやってみました。

You might be tempted to execute the following
pear install Archive_Tar
which will result in the same error.

[FIX] Installing PEAR packages with PHP 7.2 | DotKernel PSR-7 Middleware Applications

「あなたはpear install Archive_Tarを実行したくなるかもしれませんが、同じエラーで失敗するでしょう。」
ハイ、失敗しました。

Go to the line indicated in the error (639 in this case) and replace:
$v_att_list = & func_get_args();
with
$v_att_list = func_get_args();
The above means the func_get_args() isn’t called by reference anymore.

[FIX] Installing PEAR packages with PHP 7.2 | DotKernel PSR-7 Middleware Applications

エラーに示された639行目のコードで、=のあとの&を削除すればよいらしい。
修正を行ってから、もう一度pear DBを実行。

それは今推奨されてないよ、との警告されたあと、DBがダウンロードされました。

さらなるエラー failed to mkdir

ダウンロードまではうまくいきましたが、インストールは失敗しています。
failed to mkdirのエラーが。

pear.iniをC:\WINDOWS\pear.iniではなくC:\php\pear.iniなどに設置するとパッケージがインストールできないことがある。

PEAR/Config.phppear.iniのパスを修正。

PHP
function PEAR_Config($user_file = '', $system_file = '', $ftp_file = false,
$strict = true)
{
$this->PEAR();
PEAR_Installer_Role::initializeConfig($this);
$sl = DIRECTORY_SEPARATOR;
if (empty($user_file)) {
if (OS_WINDOWS) {
// pear.iniを設定
$user_file = 'C:\php-5.4.5\pear.ini';
// $user_file = PEAR_CONFIG_SYSCONFDIR . $sl . 'pear.ini';
} else {
$user_file = getenv('HOME') . $sl . '.pearrc';
}
}
(略)
}

PEARパッケージ インストール | 私的雑録

とのことでこれを試してみたものの、ダメでした。(元に戻しました。)

さらに検索

「failed to mkdir \DB\doc」でGoogle検索。
私が直面しているものとは違うパッケージをインストールしようとした人の記事が見つかりました。

Solution:
I get into the “pear” directory and checked config values set for different pear related directories. All were set to C:\ drive by default. So, we need to change those settings to correct path.

pear config-set doc_dir E:\xampp\php\pear
pear config-set cfg_dir E:\xampp\php\pear
pear config-set data_dir E:\xampp\php\pear
pear config-set test_dir E:\xampp\php\pear
pear config-set www_dir E:\xampp\php\pear

ERROR: failed to mkdir C:phppeartestsPHP_CodeSnifferCodeSnifferCoreFile [Solved] - Subharanjan

「私は "pear"ディレクトリに入り、さまざまなpear関連ディレクトリに設定された設定値をチェックしました。
すべてデフォルトではC:\ドライブに設定されていました。 したがって、これらの設定を正しいパスに変更する必要があります。」
とのこと。
そこでコマンドプロンプトで以下のコマンドを実行しました。

pear config-set doc_dir C:\xampp\php\pear
pear config-set cfg_dir C:\xampp\php\pear
pear config-set data_dir C:\xampp\php\pear
pear config-set test_dir C:\xampp\php\pear
pear config-set www_dir C:\xampp\php\pear

それぞれの入力後、

pear install db

を実行したところ、成功。

ようやくスタートラインに立てました。