今日もガクリ('A`)
きっと明日もまたガクリ?('A`)
2024 / 04
« «  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
archive for the ‘PHP’ category
Microsoft Update カタログ サイトから情報取得スクリプト Version 0.2.1

概要

Microsoft Update カタログ サイトが Internet Explorer の ActiveX の呪いから開放され、私が使用してる UA Firefox Quantum でもアクセスできるようになったので、ナレッジベース番号(以下、KB番号 と称します) リストを元に情報を取得する PHP スクリプトを作りました

前提動作環境

  • PHP 5.6.37 が動作する事。必要な extension は以下の通りです。7.x 系では確認していません
    • php_mbstring.dll
    • php_exif.dll
    • php_pdo_sqlite.dll
    多分、上記3つの extension があれば動作すると思います…
  • Firefox で Microsoft Update カタログ サイト をアクセスし、Firefox ユーザープロファイルに cookies.sqlite ファイルがある事。つまり、スクリプト内で Cookie を取得するのに、Firefox のユーザープロファイルにある cookies.sqlite から Cookie を取得している為です

制限事項

  • 実際に Microsoft Update カタログ サイトから 更新プログラムをダウンロードするものではありません。当初はこれを前提として考えていましたが、Microsoft Update カタログ サイト 自体が IIS とかいうどうしようもなく遅い Web サーバーで運用されている以上、更新プログラムをダウンロードできる URI を出力するという方向に切り換えました
  • 検索結果が複数ページの際は最初のページが検索対象となります。全てのページから情報を取得して、絞込み検索を行い…と、技術的には可能ですが Microsoft Update カタログ サイト 自体が遅いのと検索結果の次ページを取得するのに POST メソッドを使用しているのですが、Firefox の ウェブコンソールを見て渡しているデータを見て(今は)やる気なくなりました('A`)

ダウンロードとインストール

ようやくまともな形に仕上がったので、正式リリースします。以下のファイルをダウンロードし、適当なディレクトリに解凍します

内容

  • MicrosoftUpdateSearch.php
    スクリプト本体
  • MicrosoftUpdateSearch.ini
    設定ファイル
  • MicrosoftUpdateSearch.h.txt
    HTTP リクエストする際の追加ヘッダーを記述しておくファイル
  • MicrosoftUpdateSearch.List.txt
    実際に情報を取得したい KB番号 を記述したファイル。ファイル名は任意に指定できます

MicrosoftUpdateSearch.h.txt

このファイルはスクリプト本体(MicrosoftUpdateSearch.php) と同じディレクトリに置いておく必要があります

User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0
Accept-Language: ja,en;q=0.7,en-US;q=0.3
DNT: 1

このファイルの内容そのものが HTTP リクエストする際のヘッダーとして追加されます。ファイル形式は UTF-8, LF(改行), BOM 無しが望ましいです

MicrosoftUpdateSearch.ini

このファイルはスクリプト本体(MicrosoftUpdateSearch.php) と同じディレクトリに置いておく必要があります

; 初期設定ファイル
;   このファイルは MicrosoftUpdateSearch.php と同じディレクトリある必要があります
;   行頭 ; で始まる行、空行は無視されます
;   設定されるパラメーター名は大文字小文字区別されます

; Microsoft Update カタログ サイト設定
URI          = 'https://www.catalog.update.microsoft.com/'
Serach_URI   = 'https://www.catalog.update.microsoft.com/Search.aspx'
Detail_URI   = 'https://www.catalog.update.microsoft.com/ScopedViewInline.aspx?updateid='
Download_URI = 'https://www.catalog.update.microsoft.com/DownloadDialog.aspx'

; 検索語(主にKB番号) に付与する接尾語
Search_Sufix = ' Windows 7 x64'

; 検索結果を絞り込む為の除外リスト
;   評価優先順位は左から右
;   否定を指定する場合は接頭語に ! を付与する
;   複数指定する場合は , で区切る
;
;   下記の例と言うと、Embedded を含む検索結果は除外され、
;   次に Windows 7 を含まない検索結果が除外されます
Search_ExcludeList = 'Embedded','!Windows 7'

; ログファイルの設定
LogFile = 'MictosoftUpdateSearch.' . date( 'Y-m-d_His' ) . '.log'

; コンソール出力するかどうかの設定 On ならば、コンソール出力される
LogEcho = On

; コンソール出力する際の文字エンコーディング
LogEchoEncode = 'SJIS'

; ログファイルに出力する際の文字エンコーディング
LogFileEncode = 'UTF-8'

; 個々のダウンロード URI に対するログ出力追加オプション
;   使用できる変数は以下に示します
;     $n             改行(0x0d)
;     $KB            ナレッジベース番号(KB番号)
;     $Date          最終更新日時
;     $Title         タイトル
;     $Product       製品
;     $Category      分類
;     $Version       バージョン
;     $Detail_URI    詳細取得先 URI
;     $Description   概要
;     $Detail        詳細
;     $Download_URI  更新プログラムの URI
LogOutOptions = '    <a href="$Download_URI" title="$Detail">$KB</a>$n','    <tr><td><a href="$Download_URI" title="$Detail">$KB</a></td><td>$Detail</td></tr>$n$n'

; ナレッジベース番号(KB番号) を記述したファイル
KB_ListFile = 'MicrosoftUpdateSearch.List.txt'

KB番号 リストファイル

; ナレッジベース番号(KB番号) を記述したファイル
;   このファイルはスクリプトを動かすディレクトリに置きます
;   行頭 ; で始まる行、空行は無視されます

; 複数にまたがって記述する際は以下の様に記述します
KB890830,
KB4344152,
KB4343900',

; 単一行で記述する場合は以下の様に記述します
; , 文字で区切ります
KB2990941,KB3087873,KB2533552,KB2534366,KB2670838,KB2732059,KB2773072,KB2834140

To Do

今後の修正予定です

  • __construct 部分で初期化している変数を外部のファイルから取り込む
  • コマンドラインパラメーター $_SERVER['argv'] を有効活用する様にする
internet, PC, PHP, software, Windowsno commentsno trackbacks(3,575)
WordPress の余計なフィルター/アクションを除去する

久しぶりに本ブログを更新して、ふと UAFirefox Quantum でアクセスし、CTRL + UHTML ソースを見たら、何じゃこりゃ~!? とヘッダー部分に余計な汚らしい JavaScript が入っているではないか!

WordPress の余計な仕業
WordPress の余計な仕業

上記画像の水色で囲っている部分が WordPress が行っている余計な仕業です。で、最も簡単な解決方法は WordPress をインストールしているディレクトリにある wp-includes/default-filters.php を以下の行を見つけコメントアウトしてしまう事です

add_action( 'wp_head',             'rest_output_link_wp_head', 10, 0 );
add_action( 'wp_head',             'wp_resource_hints',               2     );
add_action( 'wp_head',             'print_emoji_detection_script',     7    );
add_action( 'wp_print_styles',     'print_emoji_styles'                     );

しかし、私の場合は WordPress 自体がバージョンアップする度にサーバー上に全上書きしているので、この方法だとバージョンアップの際にこの修正を忘れてしまうというヒューマンエラーを起こしてしまいます

そこで、WordPress 関数 remove_action を使います。変更対象はテンプレートの header.php を以下の様に wp_head 関数をコールされる前に記述しておきます。本ブログのテンプレートは自前で作成した物なので、WordPress バージョンアップ際にはテンプレートは更新対象外なので影響はありません

<?php
/* 2018/08/06 ヘッダーに余計なゴミ JavaScript 等を除去する */
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'wp_head', 'wp_resource_hints', 2 );
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );

wp_head();
?>

以上の変更を施し、サーバーにアップロードを行い、UA でリロード、ソースを見ると、下記画像の様にすっきりしました

WordPress の余計な仕業を除去してスッキリした HTML ヘッダー
WordPress の余計な仕業を除去してスッキリした HTML ヘッダー
blog, HTML, JavaScript, PHP, WordPressno commentsno trackbacks(986)
foobar2000 : foo_custominfo データベースダイエット

普段はあまり気にしていなかったのですが、先日に foobar2000 本体やコンポーネントをアップデートした際に異様に起動が遅い…foobar2000 をインストールしたディレクトリを覗いてみると custominfo_sqlite.db のサイズが 6MB 超えている…

なんでだろうと思い、一旦 foobar2000 を終了し SQLite Database Browser にて custominfo_sqlite.db の中を見てみると、同じ曲の fieldname が PLAYED_TIMESTAMP のレコードがやたらとできてる…多分コレのせいでしょう…

Preferences › Playback Statistics Custom › Playback Statistics Custom Settings の Play Stamp をチェックしていると Playback Statistics Update Timing に合致する度にレコードが挿入されてしまう。要はコレは再生履歴なんですが、foobar2000 じゃこのデータを使う手段や使い道がないのでチェックオフにしておく

で、PLAYED_TIMESTAMP フィールドは UI の中でも使用していないので、このレコードを削除する事にします。SQLite Database Browser で行ってもいいんですが、PHP で以下のような簡易ダイエットスクリプトを作成して実行

  1. <?php
  2. $dbf = './custominfo_sqlite.db';
  3. $dbh = new PDO( 'sqlite:'.$dbf );
  4. $stmt = $dbh->query( 'DELETE FROM quicktag WHERE fieldname = "PLAYED_TIMESTAMP"' );
  5. echo 'row count: '.$stmt->rowCount()."\n";
  6. echo 'error code: '.$stmt->errorCode()."\n";
  7. $stmt = $dbh->query( 'VACUUM' );
  8. echo 'error code: '.$stmt->errorCode()."\n";
  9. ?>

上記スクリプトを実行する事によって、約 25000 レコードが削除され、6.02MB だったファイルが 1.19MB までに小さくなりました。小さくなった custominfo_sqlite.db を foobar2000 のディレクトリに戻し、起動…サックリ起動するようになりました

使用しているフィールド PLAY_COUNT, FIRST_PLAYED_TIMESTAMP, LAST_PLAYED_TIMESTAMP が UI 側で正常に表示される事を確認して終了です

参照

foobar2000, PHPno commentsno trackbacks(17,321)
WordPress Plugins : Akismet htaccess writer
Akismet htaccess writer 1.0.1
Akismet htaccess writer 1.0.1

ここのブログシステムに WordPress を使用していることはフッター表示で解ると思いますが、スパムブロックには Akismet という同梱プラグインを使用しています。非常に優秀なプラグインで、ほとんどのスパムをブロックしてくれます…が、しかし、ブロックした後の処理がないので件の様なプラグインを作成しました

概要

以下のようなケースの場合に .htaccess の更新を行うプラグインです

  • Akismet がスパムと判定したコメントが書き込まれた
  • ダッシュボードのコメントにて、スパムとしてマークした
  • ダッシュボードのコメントの編集にて、承認ステータスをスパムとして保存した

以上のケースの場合に、承認ステータスがスパムとなっているコメントを書き込んだ IP アドレスのリストをアクセス拒否として、.htaccess を更新します

.htaccess の更新内容は # BEGIN written by WordPress plugin - Akismet htaccess writer# END written by WordPress plugin - Akismet htaccess writer ブロック内で行われます。ブロックが存在しない場合にはファイルの末尾に追加で書き込まれます。以下、サンプルです

  1. # BEGIN written by WordPress plugin - Akismet htaccess writer
  2. Order Allow,Deny
  3. Allow From All
  4. Deny From aaa.bbb.ccc.ddd
  5. Deny From eee.fff.ggg.hhh
  6.   .
  7.   .
  8.   .
  9. Deny From www.xxx.yyy.zzz
  10. # END written by WordPress plugin - Akismet htaccess writer

要求仕様

  • Apache HTTP Server
  • PHP 5.x.x 以上
  • WordPress 2.5.1 以上 1

インストール

  1. ダウンロードした akismet-htaccess-writer.zip アーカイブファイルを解凍します
  2. 解凍した akismet-htaccess-writer ディレクトリをワードプレスの /wp-content/plugins/ へコピーまたは移動します
  3. ダッシュボードの プラグイン ページを表示し、使用する を選択します
  4. ダッシュボードの プラグイン » Akismet htaccess writer にて .htaccess ファイル名を設定します

.htaccess ファイル名が設定されていない、または書き込み可能ではないと .htaccess ファイルは更新されません。また、.htaccess ファイルを書き込み可能にする場合は、HTTPD プロセスが PHP モジュールを実行する際のユーザーに限定して、ファイル属性の設定を行う事を推奨します

ダウンロード

このプラグインに関して、決して Akismet プラグイン作者に連絡は取らないでください


  1. 他のバージョンでも動作するかもしれませんが、テストする余裕がないです…('A`)
internet, PHP, WordPresscomments (20)trackbacks (14)(30,691)
PHP 5.2.6 インストール for Windows

PHP を 5.2.5 から 5.2.6 へアップデートしたので、その時のインストールメモです

PHP 5.2.6 ダウンロード、インストール

  1. PHP 5.2.6 のダウンロード
    まずは PHP 本体をダウンロードします。ダウンロードするファイルは Windows Binaries の以下の 2つです。相変わらず PHP 5.2.6 installer は不具合を抱えているのでお薦めしません 1
  2. ダウンロードした php-5.2.6-Win32.zip を解凍します
    PHP をインストールするディレクトリに解凍します
  3. ダウンロードした pecl-5.2.6-Win32.zip を解凍します
    php-5.2.6-Win32.zip を解凍したディレクトリに ext ディレクトリがあるので、このディレクトリに解凍します
  4. 必要に応じて php.ini ファイルの編集をします
    新規にインストールした場合は、解凍したディレクトリにある php.ini-dist または php.ini-recommendedphp.ini にコピーしてテキストエディタで編集します
    1. 注意しなければならないのが、extension 部分の依存関係
      exif を使うには mbstring が必要なので、exif の前に mbstring を記述しておく必要があります
      1. extension_dir=./ext/
      2. extension=php_mbstring.dll
      3. extension=php_exif.dll
      extension_dir の指定も忘れずに…
    2. エラーログの設定
      1. error_log = "C:/logs/php_error.log"
    3. インクルードパスの設定
      1. include_path = ".;C:\PHP\pear;C:\PHP\includes;"
  5. コンソールで確認します
    php -m と入力して、設定した extension がリストアップされるか確認します
  6. Windows システムの設定をします
    環境変数 path, pathext の設定。assoc, ftype コマンドでファイルサフィックス(.php) の関連付けを行います。環境変数の設定は、システムのプロパティ > 詳細設定 > 環境変数 で行ったほうがよいでしょう

    >path C:\php;%path%
    >set pathext=.php;%pathext%
    >assoc .php=PHP_Script
    >ftype PHP_Script="C:\php.exe" "%1" %*

Apache HTTP Server の設定

httpd.conf を使っている Apache のバージョンに合わせて編集します

  1. PHPCGI として動かす場合の設定です
    1. AddType application/x-httpd-php .php
    2. Action application/x-httpd-php "/php/php-cgi.exe"
    3. PHPIniDir "C:/php"
  2. PHP を モジュールとして動かす場合の設定です
    1. # for Apache 1.x
    2. LoadModule php5_module "C:/php/php5apache.dll"
    3. # for Apache 2.x
    4. LoadModule php5_module "C:/php/php5apache2.dll"
    5. # for Apache 2.2.x
    6. LoadModule php5_module "C:/php/php5apache2_2.dll"
    7. AddType application/x-httpd-php .php
    8. PHPIniDir "C:/php"

Apache を再起動、確認して終了です

Pear のインストール

Pear のセットアップとパッケージのインストール を参照してください

他システムと関係があるファイル

私が解っている範囲で他のシステムと関係のあるファイルを列挙しておきます

  • Apache HTTP Server
    • php5apache2.dll
    • php5apache2_2.dll
    • php5apache2_2_filter.dll
    • php5apache2_filter.dll
    • php5apache.dll
    • php5apache_hooks.dll
  • OpenSSL
    • ssleay32.dll
    • libeay32.dll
  • MySQL
    • libmysql.dll

参照

更新履歴

日付内容
2008/07/10 (木)

  1. カスタムインストールでインストール対象を全て選択するとインストラーがエラーを起こす。必要なファイルしかインストールしない。なので、他に必要なファイルや extension を追加しようにもまたインストラーを起動しなければならない…等々…
PHPno commentsno trackbacks(14,886)
Firefox 3 : ロケーションバーにマルチバイト文字を入力

Firefox 3 のロケーションバーにマルチバイト文字を入力して、サイトにアクセスすると正しく URL が渡らない。検索エンジンなどで使用すると、一部の検索エンジンで入力した文字列が正しくサイト側に伝わらず文字化けしてしまうという問題が…('A`)

ロケーションバーを見ると、何やら URL がエンコードされている様です…この件で検索してみると、やっぱり同じような問題が見つかりました。about:confignetwork.standard-url.encode-query-utf8 の値を true に変更する事で問題が解決しました

user_pref("network.standard-url.encode-query-utf8", true);

ところが、この問題は半分解決したといった方がいいでしょう。何故なら、この設定はサイト側の URL エンコード処理が UTF-8 の場合しか効果がありません。例えば 緑のgoo に以下の様に文字列を渡してやると、やはり文字化けします 1

http://green.search.goo.ne.jp/search?MT=漢字入力ですよ

入力エンコード指定の URL パラメーターにて、以下の様にエンコードを指定してやれば 緑のgoo に関しては、解決です

http://green.search.goo.ne.jp/search?MT=漢字入力ですよ&IE=UTF-8

サイト側でこの問題を解決する方法もあります。URL パラメーターとして入力された文字列をサイト側で処理すべき文字エンコードに変換してやればいいのです。以下の例は PHP の例です 2

  1. foreach ( $_GET as $key => $value ) {
  2.   echo '1 key: ' . $key . ' value: ' . $value . "<br />\n";
  3.   echo '2 key: ' . mb_convert_encoding( $key, 'UTF-8', 'UTF-8,SJIS,EUC-JP' ) . ' value: ' . mb_convert_encoding( $value, 'UTF-8', 'UTF-8,SJIS,EUC-JP' ) . "<br />\n";
  4. }

他の UA でも試してみましたが、Opear, IE6 は駄目でした。特に Opera 3 は酷く、ロケーションバーにマルチバイト文字を入力してエンターキーを押すと URL エンコードどころか、激しく文字化けし、4 しかもその文字化けしたデータをそのまま URL としてサイトにアクセスします。なので、サイト側で解決しても駄目です

追記

どうも、この問題は思っていたほど根が深いようです。時間がある時に調べてみたいと思います


  1. Google ではエンコード変換しているので文字化けしません
  2. mb_convert_encoding お約束ですが、この関数の3番目のパラメーターには決して AUTO は指定しないように…('A`)
  3. バージョン 9.50 と 9.51 で発生している現象です。9.27 では発生しません
  4. どうやら、JIS 変換してるような感じです…Shift-In/Out のエスケープコードが表示されます
internet, PHP, softwarecomments (2)trackbacks (2)(12,251)
CSS を PHP のヒアドキュメントとして

この件で検索を行っても CSSPHP のヒアドキュメントとして、記載する方法が見つからなかったのでメモとして記事にします

CSS を記載する方法としては style 要素の中に記述するか、link 要素の中にスタイルシートの URI を記載して UA に読み込ませると言う 2つの方法がありますが、今回、ここで記載するのは後者の方です。何故この様な事を考えたかと言うと、いい加減此処の超カオス気味のスタイルシートを何とかしたいと思った次第です

PHP の公式マニュアルによると PHP: 基本的な構文 - Manual たいていの場合、PHPHTML ドキュメントの中に埋め込まれます と記載されています。たいていの場合? では、別に HTML でなくてもいい訳です。参照先にその具体例が記載されています。そこで、まず行ったのが HTML の head 要素内の link 要素を以下の様に修正

<link rel="stylesheet" type="text/css" href="filename.php" media="all" />

スタイルシートを指定しているファイルのサフィックス部分が php になっている所がポイント。で、実際のスタイルシートファイル(.php) は以下の様に記述します

@charset "UTF-8";
<?php
  $color = 'pink';
  $background = 'green';
?>
body {
  color: <?php echo $color; ?>;
  background-color: <?php echo $background; ?>;
}

ブラウザをリロード行っても…真っ白けです。どぎつい配色になるはずなんですが、これはスタイルシートが適用されていないようです。つまり、UA がスタイルシートとして認識しなかったようです。そこで Proxomitron 1 のログウィンドウを開いて、もう一度リロードを行います。案の定 PHPHTTP レスポンスヘッダー Content-Type のメディアタイプに text/html として返しています。これが原因の様です。つまり、スタイルシートならばメディアタイプを text/css として返さなければならないのに UA に対して HTML 文書ファイルですよ。と、返してしまっている訳です。これは、PHP の設定 default_mimetypetext/html となっているので正常な動きです。そこで、スタイルシートファイル(.php) を以下の様に修正します

<?php header('Content-Type: text/css; charset=utf-8'); ?>
@charset "UTF-8";
<?php
  $color = 'pink';
  $background = 'green';
?>
body {
  color: <?php echo $color; ?>;
  background-color: <?php echo $background; ?>;
}

どうってことはありません。header 関数にてデフォルトのヘッダーを置き換えてやっているだけです。ブラウザを再度リロードするとスタイルシートが認識されました。本来ならば、ここで終了なんですが、link 要素のファイル名の指定が php となっているのがどうもかっこよくない。そこで、HTTP サーバーのアクセス制御ファイルを以下の様に記述します 2

<FilesMatch "filename\\.css">
  SetHandler application/x-httpd-php
</FilesMatch>

あとは、HTML の head 要素内の link 要素のファイル名指定部分の phpcss に変更。実際のファイル名も css に変更。実際にブラウザをリロードしてアクセス制御ファイルが効いているか確認して終わりです

これには色々と応用が効きます。各 UA に対応させる為に UA のバグを逆用して苦労してスタイルシートの読込みの振り分けなどを行っている様ですが、PHP 変数の $_SERVER["HTTP_USER_AGENT"] で判定を行えばいいのです。3 他には、色を容易に変更できる様に PHP の変数としておけば、変数の値を変更するだけで配色の変更が可能です。などなど…PHP コードが記述できるので、良いと思います 4


  1. 私が常用している HTTP フィルタリングソフト。参照: Proxomitron-J
  2. Apache HTTP Server の場合
  3. $_SERVER["HTTP_USER_AGENT"] は UA によっては偽装できるので完全に振り分けることは不可能です
  4. PHP が動かせて、なおかつ、HTTP サーバーアクセス制御ファイルが置けない環境じゃないと意味ありませんが…
CSS, PHPcomment (1)trackback (1)(14,604)
Pear のセットアップとパッケージのインストール

PHP で使用する Pear のセットアップ方法とパッケージのインストール方法のメモです。PearPECL と違ってソースコードレベルで提供されるライブラリパッケージです。パフォーマンスの点では PECL に譲りますが、インストールするパッケージは PHP ソースコードなので自分で保守できる事が特徴です

Pear のセットアップを行います。Windows のコマンドプロンプトを起動し PHP をインストールしたディレクトリに移動します

>cd /d c:¥php

PHP をインストールしたディレクトリに go-pear.bat というバッチファイルがあるのでこのコマンドスクリプトを実行します

>go-pear

go-pear を実行すると、以下の様にインストール方法に関する情報を入力するようにプロンプトが表示されます

>go-pear

Are you installing a system-wide PEAR or a local copy?
(system|local) [system] : enter

デフォルトの system でいいので enter で次に進みます

Below is a suggested file layout for your new PEAR installation. To
change individual locations, type the number in front of the
directory. Type 'all' to change all of them or simply press Enter to
accept these locations.

1. Installation base ($prefix) : C:¥php
2. Temporary directory for processing : C:¥php¥tmp
3. Temporary directory for downloads : C:¥php¥tmp
4. Binaries directory : C:¥php
5. PHP code directory ($php_dir) : C:¥php¥pear
6. Documentation directory : C:¥php¥pear¥docs
7. Data directory : C:¥php¥pear¥data
8. Tests directory : C:¥php¥pear¥tests
9. Name of configuration file : C:¥php¥pear.ini
10. Path to CLI php.exe : C:¥php

1-10, 'all' or Enter to continue: enter

1 から 10 までの Pear で使用するディレクトリを指定します。そのままでよければ enter でセットアップを開始します。ディレクトリを変更したい場合は変更したい対応する番号を入力します。例えば 5番の PHP code directory を変更したい場合は、5 enter とここで入力します

Beginning install...
Configuration written to C:¥php¥pear.ini...
Initialized registry...
Preparing to install...
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Archive_Tar-1.3.2.tar...
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Console_Getopt-1.2.3.tar...
installing phar://go-pear.phar/PEAR/go-pear-tarballs/PEAR-1.6.1.tar...
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Structures_Graph-1.0.2.tar...
pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
install ok: channel://pear.php.net/Archive_Tar-1.3.2
install ok: channel://pear.php.net/Console_Getopt-1.2.3
install ok: channel://pear.php.net/Structures_Graph-1.0.2
install ok: channel://pear.php.net/PEAR-1.6.1
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
PEAR: To install optional features use "pear install pear/PEAR#featurename"

** WARNING! Old version found at C:¥php, please remove it or be sure to use the new c:¥php¥pear.bat command

go-pear を何回も行ったりするとこの警告メッセージが表示されますが、この場合は特に問題ないのできにしなくてよい

The 'pear' command is now at your service at c:¥php¥pear.bat

* WINDOWS ENVIRONMENT VARIABLES *
For convenience, a REG file is available under C:¥php¥PEAR_ENV.reg .
This file creates ENV variables for the current user.

Double-click this file to add it to the current user registry.

との、事なので C:¥php¥PEAR_ENV.reg をエクスプローラーなどからダブルクリックしてシステムに反映させます。行っていることは環境変数の設定です

続行するには何かキーを押してください . . .enter

>

以上で Pear のパッケージをインストール前準備ができました。次は、実際にパッケージをインストールしてみましょう。取り敢えず、pear コマンドとタイプしてみて pear が動作するか試します

>pear
Commands:

build                  Build an Extension From C Source
bundle                 Unpacks a Pecl Package
channel-add            Add a Channel
channel-alias          Specify an alias to a channel name
channel-delete         Remove a Channel From the List
channel-discover       Initialize a Channel from its server
channel-info           Retrieve Information on a Channel
channel-update         Update an Existing Channel
clear-cache            Clear Web Services Cache
config-create          Create a Default configuration file
config-get             Show One Setting
config-help            Show Information About Setting
config-set             Change Setting
config-show            Show All Settings
convert                Convert a package.xml 1.0 to package.xml 2.0 format
cvsdiff                Run a "cvs diff" for all files in a package
cvstag                 Set CVS Release Tag
download               Download Package
download-all           Downloads each available package from the default channel
info                   Display information about a package
install                Install Package
list                   List Installed Packages In The Default Channel
list-all               List All Packages
list-channels          List Available Channels
list-files             List Files In Installed Package
list-upgrades          List Available Upgrades
login                  Connects and authenticates to remote server
logout                 Logs out from the remote server
makerpm                Builds an RPM spec file from a PEAR package
package                Build Package
package-dependencies   Show package dependencies
package-validate       Validate Package Consistency
pickle                 Build PECL Package
remote-info            Information About Remote Packages
remote-list            List Remote Packages
run-scripts            Run Post-Install Scripts bundled with a package
run-tests              Run Regression Tests
search                 Search remote package database
shell-test             Shell Script Test
sign                   Sign a package distribution file
uninstall              Un-install Package
update-channels        Update the Channel List
upgrade                Upgrade Package
upgrade-all            Upgrade All Packages
Usage: pear [options] command [command-options] <parameters>
Type "pear help options" to list all options.
Type "pear help shortcuts" to list all command shortcuts.
Type "pear help <command>" to get the help for the specified command.

もっともメジャーなパッケージ HTTP_Request パッケージをインストールしてみましょう

>pear install HTTP_Request

WARNING: "pear/Net_URL" is deprecated in favor of "pear/Net_URL2"
downloading HTTP_Request-1.4.2.tgz ...
Starting to download HTTP_Request-1.4.2.tgz (16,398 bytes)
......done: 16,398 bytes
install ok: channel://pear.php.net/HTTP_Request-1.4.2

>

この警告メッセージは Net_URL パッケージが Net_URL2 に取って代わられました。と表示される(2007/12/23 現在) と思いますが、Net_URL のサイトを参照するかぎり、バグとセキュリティフィックスのために維持されているようなので、このままでも構いません。が、一応、stable バージョン以外のパッケージのインストール方法を示す為にNet_URL2 (2007/12/23 現在βバージョンです) もインストールしてみましょう

>pear install Net_URL2

Failed to download pear/Net_URL2 within preferred state "stable", latest release is version 0.1.0, stability "beta", use "channel://pear.php.net/Net_URL2-0.1.0" to install
Cannot initialize 'channel://pear.php.net/Net_URL2', invalid or missing package file
Package "channel://pear.php.net/Net_URL2" is not valid
install failed

>

どうやら、stable バージョンではないパッケージをインストールすることはパッケージ名を指定してできないので、チャンネル名を指定してインストールしろとの事なので、その様にします

>pear install channel://pear.php.net/Net_URL2-0.1.0

downloading Net_URL2-0.1.0.tgz ...
Starting to download Net_URL2-0.1.0.tgz (5,358 bytes)
.....done: 5,358 bytes
install ok: channel://pear.php.net/Net_URL2-0.1.0
>

Net_URL2 パッケージのインストールが成功しました。インストールされているパッケージの一覧を見てみます

>pear list

INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET:
=========================================
PACKAGE          VERSION STATE
Archive_Tar      1.3.2   stable
Console_Color    1.0.2   stable
Console_Getopt   1.2.3   stable
HTTP             1.4.0   stable
HTTP_Request     1.4.2   stable
Net_DNS          1.0.0   stable
Net_Socket       1.0.8   stable
Net_URL          1.0.15  stable
Net_URL2         0.1.0   beta
PEAR             1.6.1   stable
Services_DynDNS  0.3.1   alpha
Structures_Graph 1.0.2   stable

>

以上で大まかな Pear のセットアップとパッケージのインストール方法は終了です。実際に Pear のパッケージを使用した PHP のサンプルなども記事にしたいと思っています

PHPcomment (1)trackback (1)(31,670)
PHP 5.2.5 インストール for Windows

PHP を最近バージョンアップしたので、その時のインストールメモです

  1. PHP 5.2.5 のダウンロード
    まずは PHP 本体をダウンロードします。ダウンロードするファイルは Windows Binaries の以下の2つです
    • PHP 5.2.5 zip package (php-5.2.5-Win32.zip)
    • PECL 5.2.5 Win32 binaries (pecl-5.2.5-Win32.zip)
    PHP 5.2.5 installer はインストーラーが壊れていて正常にインストールできません
  2. php-5.2.5-Win32.zip を解凍
    PHP をインストールするディレクトリに解凍
  3. pecl-5.2.5-Win32.zip を解凍
    php-5.2.5-Win32.zip を解凍したディレクトリに ext ディレクトリがあるので、このディレクトリに解凍
  4. php.ini の編集
    注意しなければならないのが、extension 部分の依存関係。exif を使うには mbstring が必要なので、exif の前に mbstring を記述しておく必要があります

    extension=php_mbstring.dll
    extension=php_exif.dll

  5. コンソールで確認
    php -m 等で起動の確認をします
  6. Windows システムの設定
    環境変数 path, pathext の設定。assoc, ftype コマンドでファイルサフィックス(.php) の関連付けを行います。 環境変数の設定は、システムのプロパティ > 詳細設定 > 環境変数 で行ったほうがよいでしょう

    >path c:\php;%path%

    >set pathext=.php;%pathext%

    >assoc .php=PHP_Script

    >ftype PHP_Script="C:\php.exe" "%1" %*

以上で終了ですが、Pear のインストールや Web サーバー(Apache2) との連携に関する事柄は、別の記事にしたいと思います

追記

バージョン 5.2.6 が 2008/05/01 にリリースされたのでここの記事が古くなっていますので、PHP 5.2.6 インストール for Windows を参照してください

更新履歴

日付内容
2008/07/06 (土)リンク先や文面を修正
PHPno commentsno trackbacks(7,010)
contents
most viewed (1183835)
categories
archives
recent posts
recent updates
recent comments
recent trackbacks
912T ASUSTeK ASUSTeK Crosshair IV Extreme blog CSS DARK SOULS DARK SOULS 3 Darksouls3 DarksoulsIII DARK SOULS III DISM Euro Truck Simulator 2 Everquest II firefox foobar2000 game Install internet KB2990941 KB3087873 mod panels ui PCゲーム PHP PX-Q3PE Raid skin SoftBank software SpeedFan Spinel Steam TPS trailer truck TvRock TVTest Windows Windows 7 Win Toolkit WordPress インストール ダークソウルズ 初音ミク 窓辺ななみ
mobile
qrcode:home
profile
曇り札幌市中央区 ‘ 曇り
気温: 10℃ ‘ 湿度: 66%
recommends
Valid XHTML 1.0 Transitional Valid CSS X.X
RSS 2.0 RSS 0.92
RDF/RSS ATOM
get Firefox 2 get Opera
ie