Windows10に入れたXAMPPでPHPとMySQLの勉強中なのだけど、教科書に載っているPEAR::DBのインストールでつまづきました。
教科書には「Windows版PHPには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
[FIX] Installing PEAR packages with PHP 7.2 | DotKernel PSR-7 Middleware Applications
pear install Archive_Tar
which will result in the same error.
「あなたはpear install Archive_Tar
を実行したくなるかもしれませんが、同じエラーで失敗するでしょう。」
ハイ、失敗しました。
Go to the line indicated in the error (639 in this case) and replace:
[FIX] Installing PEAR packages with PHP 7.2 | DotKernel PSR-7 Middleware Applications
$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.
エラーに示された639行目のコードで、=のあとの&を削除すればよいらしい。
修正を行ってから、もう一度pear DB
を実行。
それは今推奨されてないよ、との警告されたあと、DBがダウンロードされました。
さらなるエラー failed to mkdir
ダウンロードまではうまくいきましたが、インストールは失敗しています。
failed to mkdirのエラーが。
pear.iniをC:\WINDOWS\pear.iniではなくC:\php\pear.iniなどに設置するとパッケージがインストールできないことがある。
PEAR/Config.phpのpear.iniのパスを修正。
PHP
PEARパッケージ インストール | 私的雑録
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';
}
}
(略)
}
とのことでこれを試してみたものの、ダメでした。(元に戻しました。)
さらに検索
「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
ERROR: failed to mkdir C:phppeartestsPHP_CodeSnifferCodeSnifferCoreFile [Solved] - Subharanjan
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
「私は "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