PEARのアップグレイド

PEARをインストールしたのが2007年でしたがそれからヴァージョンアップされていました。
AmazonWEBサービスが2009年8月から変更になったのですが、対処のための時間がとれずそのままになっていました。調べるとPHPのバージョンがPHP5でないと難しいようで、PHP4だとPEARのServices/Amazon.phpをつかうとできる?ようなことが書かれてあったのでそれをPEARのHPからまず、ローカルな環境にてダウンロード(アップグレイド)しようと思い試してみました。
すると悲しいかなPEARのInstallerのバージョンが古すぎてダウンロードできない。PEAR自体をアップグレードしようにもやはりInstallerのバージョンがふるいようでできません。
—-
WARNING: channel “pear.php.net” has updated its protocols,use “channel-update p
ear.php.net” to update
pear/Archive_Tar requires PEAR Installer (version >= 1.5.4),installed version i
s 1.5.1
———
最初に出たWARNINGについては
pear channel-update pear.php.net
としてOKでしたがInstallerの方はどうもよく分かりませんでした。
そこで「PEAR 強制 アップグレード」などと検索して、–force か-f を加えてやるといいとあったので実行。
PEARはアップグレイドできました。その後Services/Amazon.phpもアップグレイドしてAmazonWEBサービスを試してみましたがPHP4ではやはり難しいようです。hashに関係するエラーメッセージがでてきてつながりません。

サーバーを変えなければ駄目か!


PEARがときどき動かなかった原因

PEARがときどき動かなかった原因はどうやらサーバーのメモリー不足のようでした。

最近PEARの動作不良以外にCGIの動作もときどきサーバーエラーとなり、FTP接続も一時的にできなくなる現象が起き、さらにはメールの受信もできなくなっていたのでサーバー管理会社に調べてもらいました。

その結果、サーバーのメモリー割り当てが不足していたことが原因ということでメモリー割り当てを増やしていただきました。

とりあえず様子をみることに。


PEARが働かない?

最近PEARを使ったプログラムが時々働いていません。

API関係はすべてPEARを使っているので全滅です。

サーバーの負荷の問題?

原因は不明ですが、調子が悪いです。

対策として、PHP4でも使えそうな

http://keithdevens.com/software/phpxml

のPHP XML Libraryを使ってみようと思います。


PHPでPDFファイルを作れるTCPDF

PHPを利用してPDFファイルが作れるTCPDFを使ってみました。
他にもFPDFという無料のライブラリがあるそうですが、TCPDFはそれをさらに発展させた無料のライブラリです。
現在のバージョンは、4.0.030 です。特徴は、

  • PHP4とPHP5に対応
  • 日本語が使える(但し、エンコードUTF-8でファイル保存する必要有り)
  • HTMLのタグが使用可能(但し、制限有り、また< br /><img src=”" />のようにタグの終わりの区切りが必要)
  • テーブルタグは使用可能だが文字数が多いとタイムエラーになる。またボーダーの色は指定できないようです)
  • マルチセル関数を使ってタイトル、本文を自由に配置できる
  • イメージ関数を使って、イメージ画像を自由に配置できる
  • 配置の位置決めはミリ単位でできる。(tcpdf_config.phpでpt,mm,cmをいづれか指定できる)
  • ライン関数を使って縦横斜めに線が色と太さと形状を変えて指定できる
  • グラフィック関数もあるので、角丸の長方形をマルチセルにかぶせて体裁を整えることが出来る
  • 文字の大きさ、色はマルチセル単位で変更できる
  • などですが、CSVのようなデータファイルを元に動的にPDFを作成することが可能です。

    日本語での情報は、チーターエンジニア(TCPDFドキュメント)が最新情報に適応しています。

    チータ-エンジニアさんに感謝いたします。


    CGIでセットしたクッキーがPHPで読める?

    CGIで作られた会員用プログラムはクッキーがセットしてあるのですが、そのクッキーを利用してPHPで追加のプログラムを作ってみようかと思いました。

    そこで、クッキーを学んだことのない私には、CGIでセットしたクッキーがPHPで読める?ということがなかなか分からず苦労しました。

    原因は、クッキーが作成されたディレクトリの配下でしか読めないという基本的なことに気づくのが遅れたためです。

    Aというディレクトリで作成されたCGIのクッキー(名前を仮にcokkiename)をPHPのテストプログラムで上位のルートから読み込もうと無駄なことをしていました。Aディレクトリにテスト用のPHPのプログラム「echo $_COKKIE['cokkiename'];」をおいて実行。

    結論は、CGIでセットしたクッキーがPHPで読めました。でももう少し基礎から勉強しておけばすぐ分かったことですね。


    includeとパス <メモとして>

    PHPでプログラムを書く時、includeでファイルを読み込むことは欠かせません。しかし、相対パスで記入していると、あるカレントディレクトリのデータファイルを読み込んで処理するプログラムをそのカレントディレクターに作った場合、それを上位のディレクトリで実行すると、ファイルがありませんというPHPエラーとなります。

    それを解消するには、データファイルをフルパスで読み込む必要があります。しかし、通常、ローカルの環境で試行してサーバーにアップするので、ローカルの場合は、「http://localhost/・・・」、サーバーの場合は「http://www.ドメイン名/・・・」というふうに切り替えなければなりません。

    いちいちローカルで試した後、書き換えてアップしてもいいのですがこういう作業はミスを招きます。

    そこで、PHPでは、実行するファイルの絶対パスを表示してくれる関数がありますのでそれを利用することにします。

    使うのは、dirname()と__FILE__という関数と定数で、dirname(__FILE__)とすれば、現在のファイルの絶対パスが得られます。例えば、aaa.phpというファイルに、print dirname(__FILE__);という行を加えると、”var/HTML/abcdefg.com/web/aaa.phpのように絶対パスが表示されます。この文字のうち、ローカルのディレクトリ名に使っていない文字を抜き出してくる関数を使用します。strstrという関数は指定した部分文字があれば、その文字以降を抜き出しますが、なければFALSEを返します。したがって、if文でFALSEでなければ「http://www.abcdefg.com/ 」を、FALSEなら、「http://localhost/ 」をカレントデレクトリ/データファイルに加えれば

    いいということになります。

    ドメイン名:abcdefg.com
    データファイル名:data.csv
    データファイルのカレントディレクトリ:data
    実行するファイル:ルートディレクトリのtest.php

    と仮定。

    test.phpに以下の記述を加えます。


    他にもやり方はありそうですがとりあえず覚えとして。


    Yomi-Search(PHP) modifiedへの移行完了

    岡山WEBネットの検索エンジンがCGI版のYomi-SearchからPHP版に移行しました。

    動作確認にはもう少し時間がかかりそうなので、旧来のCGI版も今のところ残してあります。

    但しCGI版からは新規登録はできません。

    動作の最終確認後、ご登録してくださった方にお知らせしようかと思っております。


    Yomi-Search(PHP)modifiedのインストールで得られたもの

    PHPを勉強しているのだから岡山WEBサーチのYomi-SearchもCGI版からPHPに変えようかと思いつき、インストールを試行。
    実は、以前もPHP版に一時的に移行したことがあったのだけれど、バックアップが文字化けとなり断念したことがあったのです。今度は、それから年数もたっていることだし進化したに違いないと思い、テスト的にインストール。
    しかし、不思議なことにインストールしたら英数字以外がすべて??という文字に。データベースの照会順序ががlaten1_swedish_ci になり、yomisearchの管理画面から見ても文字は????のまま。新規登録した文字も英数字以外の日本語は????に変換。おかしいと思いながら、インターネットで検索していると
    XAMPP+Yomi-Search(PHP)modified で 文字化け(PHP+MySQL の文字化け) (masha.webTechLog)というところで
    「データベースとテーブルの文字コード設定が原因 データベースの文字コード(MySQL 接続照会順序)が初期状態「latin1」のままだったことが直接の原因。phpMyAdmin 上で「ALTER DATABASE `DB名` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci」を実行し文字コードを utf8 へと変更。そして Yomi-Search(PHP)modified を再セットアップすると文字化けは解消した。(以上引用)」
    を発見。
    そして、phpMyAdminを見て見ると、「操作」という画面でテーブルごとに文字の照会順序が変更できることにやっと気がつきました。yomi_categoryのテーブルをlaten1_swedish_ci から utf8_unicode_ci に変更すると既に入っているデータは??のままですが新規に入力したり、データベースに修正でカタカナや漢字ををいれると文字化けも無くなりました。
    私が借りているサーバーの問題と思いますが、自分としては、やっと解決したのでほっとしています。
    つぎにインストールした後でいちいちテーブルごとに照会順序を変えたのでは面倒なので、データベースを作成した時に照会順序をutf8にしたらどうなるかと思い、Yomi-Search用にデータベースを作成し、phpMyAdminでそのデータベース名を確認し、操作ボタンで見ると、照会順序が laten1_swedish_ci になっているので をそれを utf8_unicode_ci 変更。そしてセットアップを実行するとすべてのテーブルがutf8_unicode_ciに。文字化けも無くセットアップ完了しました。

    後は、既存データの移動とバックアップがうまくいけばPHP版に移行しようかと思います。


    岡山WEBブログのバージョンアップに関して

    岡山WEBブログは、wordpressを使用しています。
    これまでのヴァージョンはME2.2でした。
    ME2.2からは、データのバックアップがやりやすくなっています。データはMYSQLというデータベースに保存されるようになっていますが、このMYSQLがなかなか難解です。それは日本語という文字データの受け渡しです。レンタルサーバーの場合はなおさらやっかいです。それは、MYSQLの設定、それを読み出す時に利用するPHPの設定が自由にはいかないことです。このブログをおいてあるレンタルサーバーでは、通常MYSQLのデータを見るためのPHPMyAdminを使います。それを使ってエクスポートすると、文字化けという現象がおきました。それは以前のバージョンの時は、バージョンアップするために記事を、ひとつひとつコピペという手作業で移し変えたりもしていました。その時はデータ数も多くなかったのでそれでも良かったのです。
    2.2MEからは、それが改善され、WORDPRESSの管理画面からデータのバックアップがXML形式でできるようになっています。そのデータは文字化けはしていません。
    しかし、2.2MEでも、PHPmyadminでみると文字化けしています。なぜかデータベース照合手順がlaten1_swedish_ciになっていて英数字以外は文字化けして見えるのです。WEB上のブログでは文字化けはしていませんが、MYSQLをみるためのツールでみると文字化けしてしいたのです。
    そして、今回、2.5.1にバージョンアップした結果、PHPMyAdminでみてみると、照合手順がutf_general_c1となっていて内容もすべて確認できました。文字化けは解消しています。
    感想として、日本語対応がスムーズになって安心して使えます。WORDPRESSの日本語化に携わった方々の努力に感謝したいと思います。


    岡山イベント情報の更新

    岡山イベント情報を更新しました。
    このイベント情報は、岡山県観光物産課の情報を元にしています。以前、岡山県庁に用事があって行ったときに、岡山県のホームページにでているイベント情報を使わせてくださいとお願いしたら、ぜひ使ってくださいという返事を頂きました。
    表形式の岡山イベント情報を、CSV形式のファイルにして、確定情報だけをfeedcreator.class.php
    を使って、RSS2.0に変換し、それを、PEARのUnserializer.phpを使って、HTMLで表示させました。

    feedcreatorは、RSSフィード生成用のライブラリですが、ウノウラボさんの紹介情報などが参考になりました。