• PHP5.3でPHP Parse error: syntax error, unexpected T_ENDWHILE

    PHP 5.3にアップデートしたらWordPressのトップページが真っ白になりました。

    Apacheのエラーログを確認してみました。

    # tail /var/log/httpd/error_log
    [Fri Mar 18 0:22:03 2011] [error] [client *.*.*.*] PHP Parse error:  syntax error, unexpected T_ENDWHILE in /home/webusers/dagejp/public_html/wp-content/themes/black-hat/index.php on line 45
    #
    

    テンプレートファイル内でエラーが出ているらしいです。確認したところ endwhile の行でエラーが出ているようです。

    endwhileはPHP5.3で対応していないのかもしれない。真偽を調査するのも面倒だったのでデザインテンプレートを変更して対応。


  • EC-CUBEで商品情報が登録できなくなった

    快適な新サーバーが開通したので稼働中のEC-CUBEを新サーバーへ移管しました。そして今日、商品マスタを登録しようとしたところ次のようなエラーが発生し、登録できませんでした。

    システムエラーが発生しました。
    大変お手数ですが、サイト管理者までご連絡ください。

    data/logs/site.log を確認したところ、次のようなエラーメッセージが残されていました。

    INSERT INTO dtb_products(name,status,product_flag,main_list_comment,main_comment,point_rate,deliv_fee,comment1,comment2,comment3,comment4,comment5,comment6,sale_limit,sale_unlimited,deliv_date_id,note,update_date,creator_id,main_list_image,main_image,main_large_image,sub_image1,sub_large_image1,sub_image2,sub_large_image2,sub_image3,sub_large_image3,sub_image4,sub_large_image4,sub_image5,sub_large_image5,file1,file2,sub_title1,sub_comment1,sub_title2,sub_comment2,sub_title3,sub_comment3,sub_title4,sub_comment4,sub_title5,sub_comment5,create_date) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,Now(),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,Now())
    DB Error: constraint violation
    
    INSERT INTO dtb_products(name,status,product_flag,main_list_comment,main_comment,point_rate,deliv_fee,comment1,comment2,comment3,comment4,comment5,comment6,sale_limit,sale_unlimited,deliv_date_id,note,update_date,creator_id,main_list_image,main_image,main_large_image,sub_image1,sub_large_image1,sub_image2,sub_large_image2,sub_image3,sub_large_image3,sub_image4,sub_large_image4,sub_image5,sub_large_image5,file1,file2,sub_title1,sub_comment1,sub_title2,sub_comment2,sub_title3,sub_comment3,sub_title4,sub_comment4,sub_title5,sub_comment5,create_date) VALUES ('test','2','00000','test','test','11',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'11',NULL,'1',NULL,Now(),'2','07291930_4c51585f108ce.gif','07291931_4c51586425a77.gif',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,Now())
    [nativecode=1048 ** Column 'note' cannot be null]
    

    確認する限りだと  dtb_products テーブルの note という項目にNULLを入れよ

    うとして失敗しているように受け取れます。テーブル定義を調べたところ、note は NULLを許可していないご様子。 結果 mysql にキックされていたようです。

    旧サーバーの dtb_products テーブルを確認いたしましたところ、 note にはNULL ではなく ” (空) データが入ってました。

    たぶん、今まで ” が挿入されようとした時そのまま空データとして挿入されていたところ、データベース接続ライブラリのバージョンアップなどのせいで、” ではなく NULL を挿入するような仕様になってしまっていたのだと思います。

    dtb_products.note にNULLを許可するようにして対応しました。

    mysql> ALTER TABLE dtb_products CHANGE COLUMN note note text DEFAULT NULL;
    
    

  • コメントに対して連番を振る WordPress プラグイン

    仕事で必要だったので、コメントに対して連番をふるための WordPressのプラグイン 「 comment-numbering 」 を作ってみました。

    動作確認済 : WordPress 3.0

    comment-numbering.tar.gz

    1. 展開してcomment-numberingディレクトリごと wp-content/plugins の中に設置。
    2. 管理画面からプラグインを有効にする。
    3. テンプレート修正。連番を表示したい箇所に追記。
      <?php echo $comment->ctnb_comment_number; ?>
      
    4. コメントする。
      コメントを投稿すると連番が振られていきます。