アーカイブ - 3月, 2011



2011年 3月 27

remiリポジトリでphp5.3をyumでインストールしたけど、php5.2で動いていたスクリプトが動かない。
困るのでphpをダウングレードする。

php関連パッケージを調べる。

# yum list installed | grep php*
php.i386                               5.3.6-1.el5.remi                installed
php-cli.i386                           5.3.6-1.el5.remi                installed
php-common.i386                        5.3.6-1.el5.remi                installed
php-gd.i386                            5.3.6-1.el5.remi                installed
php-imap.i386                          5.3.6-1.el5.remi                installed
php-ldap.i386                          5.3.6-1.el5.remi                installed
php-mbstring.i386                      5.3.6-1.el5.remi                installed
php-mcrypt.i386                        5.3.6-1.el5.remi                installed
php-mysql.i386                         5.3.6-1.el5.remi                installed
php-pdo.i386                           5.3.6-1.el5.remi                installed
php-pear.noarch                        1:1.9.2-3.el5.remi              installed
php-pgsql.i386                         5.3.6-1.el5.remi                installed
php-xml.i386                           5.3.6-1.el5.remi                installed

# yum remove php*
だと、全てのパッケージが削除されない?ようなので、手動設定でパッケージを削除。

# yum remove php php-cli php-common php-gd php-imap php-ldap php-mbstring php-mcrypt php-mysql php-pdo php-pear php-pgsql php-xml

※ /etc/php.ini は /etc/php.ini.rpmsave として保存される。 .. continue reading ..


Filed under: CentOS5.x,PHP,サーバ管理

Trackback Uri






2011年 3月 24

PHP5.3にしたらOpenPNEでエラーが発生。
このようなエラー。

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/OpenPNE/lib/include/PEAR.php on line 569

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/OpenPNE/lib/include/PEAR.php on line 572

以下(ry

PEAR使ってる状態でPHPのバージョンを上げると、PEARから上記エラーが出てくる場合がありますが・・・
これは、PHP5では、newすると参照になるのに、それを =& でさらに参照で受け取ろうとしてエラーが出ている模様。
消す方法はいくつかあります。
1. error_reportingで表示しないようにする。
error_reporting(E_ALL & ~E_DEPRECATED);

2. エラーの出ている場所を修正する。
エラー箇所のソースを読むと、 =& になっているので = に変更。

参照:為せば成る・・・かもしれない

と言うことなので、OpenPNEのconfig.phpを修正する。
PHPの仕様が変更されたので出る警告らしい。
エラーは消えるけど、将来的にはソースを変更した方がいいのかも。

OpenPNE_DIR/config.php 236行目付近(バージョンによって違うかも)

///
// デバッグ、エラーハンドリング、ログ設定
///

//error_reporting(E_ALL ^ E_NOTICE); ←コメントアウト
error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE); ←追記

OpenPNEの不具合

get@hoge.com (空メールで登録用URLを送信するアドレス)へ送ってもメールが帰ってこない。
オープン制の場合はスクリプトの修正が必要かも。
日記のメール投稿やコミュニティの投稿などは出来るようだ。


Filed under: OpenPNE

Trackback Uri






2011年 3月 16

震災の影響で停電になった時に残っていたログ。

apcupsdのeventsログ

2011-03-11 14:48:20 +0900  Power failure.
2011-03-11 14:48:26 +0900  Running on UPS batteries.
2011-03-11 15:41:07 +0900  Battery power exhausted.
2011-03-11 15:41:07 +0900  Initiating system shutdown!
2011-03-11 15:41:07 +0900  User logins prohibited
2011-03-11 15:42:22 +0900  apcupsd exiting, signal 15
2011-03-11 15:42:22 +0900  apcupsd shutdown succeeded

Filed under: サーバ管理

Trackback Uri






2011年 3月 9

perlのWAF(ウェブアプリケーションフレームワーク)である Mojolicious(Mojolicious::Lite)をアップロードだけで使えるのか試してみる。

簡単に使えるフレームワークとして、とりあえず Linux+Apacheで動けばおkという前提で。

なにせフレームワーク初心者の戯事なのでそのあたりは察してください。

.. continue reading ..


Filed under: Mojolicious,perl,perlモジュール

Trackback Uri






2011年 3月 8

メール送信に便利な Mail::Sendmail
大変便利なモジュールだけど、RFCに違反しているメールアドレスでは内部のエラーチェックに引っかかり送信出来ない。

例えばこんなメールアドレスには送信出来ない。
例)read_rfc822.@docomo.ne.jp

元ソースの正規表現部分

# regex for e-mail addresses where full=$1, user=$2, domain=$3
# see pod documentation about this regex

my $word_rx = '[\x21\x23-\x27\x2A-\x2B\x2D\x2F\w\x3D\x3F]+';
my $user_rx = $word_rx         # valid chars
             .'(?:\.' . $word_rx . ')*' # possibly more words preceded by a dot
             ;
my $dom_rx = '\w[-\w]*(?:\.\w[-\w]*)*'; # less valid chars in domain names
my $ip_rx = '\[\d{1,3}(?:\.\d{1,3}){3}\]';

$address_rx = '((' . $user_rx . ')\@(' . $dom_rx . '|' . $ip_rx . '))';
; # v. 0.61

@EXPORT_OK に $address_rx が設定されているので、$Mail::Sendmail::address_rx の正規表現を変更すればエラーチェックに引っかからないようになる。

my $word_rx = '[\x21\x23-\x27\x2A-\x2B\x2D\x2F\w\x3D\x3F\.]+'; # \.を追記する
my $user_rx = $word_rx . '(?:\.' . $word_rx . ')*' ;
my $dom_rx = '\w[-\w]*(?:\.\w[-\w]*)*'; # less valid chars in domain names
my $ip_rx = '\[\d{1,3}(?:\.\d{1,3}){3}\]';
my $address_rx = '((' . $user_rx . ')\@(' . $dom_rx . '|' . $ip_rx . '))';
$Mail::Sendmail::address_rx= $address_rx;

正規表現を無効にした場合、当然の事ながらその前にメールアドレスの正当性をチェックしておく必要があると思う。(携帯メールアドレスを有効にするなら Email::Valid::Loose 等)

  • 関連記事:perl でメールアドレスの有効性をチェックするモジュール
  • モダンなperlモジュール

    メール送信系のモジュールは山ほどあるので何がいいか悩むところ。Mail::Sendmail のエントリーだけど、 Email::Sender がモダンなモジュールとして紹介されているのでリンクを載せておく。

  • モダンPerlの世界へようこそ:第20回 Email::Sender:メールを送信する|gihyo.jp … 技術評論社
  • [Email::Sender]Perlでメールを送信するときはEmail::Senderを使いましょうというお話 – punitanのメモ
  • 気になる点は Moose に依存しているという事。

  • Perl5 によるメール送信 – 実践的な Email::Sender の利用方法

  • Filed under: perl,perlモジュール

    Trackback Uri