5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

タグ: PHP

  • CakePHP3 のベータ2がリリースされた話し

    CakePHP3 のベータ2がリリースされたそうで、わたしのほうはようやくインストールしてトップのページが見られたところ。

    VagrantでCentOS6.5の上で動かそうとしてPHPは5.4以上じゃないとダメと気が付いて回り道した。結局はChefでゴニョゴニョとレシピを書いて一発で動作環境を立ち上げるところまでやっていた。opscodeのクックブックを組み合わせて呼び出しているだけだけど。

    CentOSは7になると、とっても大変だということで諦めて(いずれ何とかしないといけないけど)、CentOS6.5にPHP5.4をremiからインストールするようにした。

    動作環境さえできてしまえば、CakePHP3はComposerで簡単インストール。あっけなくトップページが見ることができた。DebugKitも入った。ディレクトリがCakePHP2と違っている。

    さてこれから・・・。

    CakePHP 3.0.0 ベータ2がリリースされました – The Bakery, なんでもCakePHP!
    CakePHPコアチームはCakePHP 3.0.0の2番めのベータリリースをお知らせいたします。 最初のベータリリースから約1ヶ月経ち、コミュニティの皆さんがこの新バージョンを大歓迎してくれていることを嬉しく思います。積極的なフィードバックやヘルプはコアチームの3.0によるデベロッパ体験を改善するための精力的な作業の …

    View this post on Google+

    著:山田祥寛
    ¥3,366 (2025/03/12 08:20時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/03/16 09:41時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/03/12 08:21時点 | Amazon調べ)
  • Berkshelf のWindowsへのより簡単なインストール方法の話し

    以前、Berkshelf のインストールが面倒、と書きましたが、もっと簡単なイントール方法が紹介されていました。

    紹介されていたのは、「CakePHPで学ぶ継続的インテグレーション」という本です。ここで、ChefDK(Chef Development Kit)を利用する方法が書かれています。

    ChefDKを使えば、Rubyやgemをインストールことなく、ChefやBerkshelfなどのChefに関連するツールをまとめてWindows上にインストールできます。面倒なRuby関連のツールをChefDKでWindowsに簡単にでききます。これでChefを使いたいだけなのに、Ruby関連のインストールと格闘しなければいけない、なんてことがなくなります。

  • #PHP のis_file()で必ずfalseが返ってしまう話し

    タイトル通り、PHP のis_file()で必ずfalseが返ってしまうということで、丸半日悩んだこと。原因は簡単なことでした。簡単なことだけど、どうせ忘れるので、覚え書きを書いておきます。

    ファイルが存在するのに、is_file()で必ずfalseが返ってしまいます。調べてみたら、フルパスでファイルを指定しろとか言われます。最初からフルパスの指定です。

    ローカルのVagrantで動かしているサーバー上では、正しくtrueが返ります。テストサーバーで使用している実サーバーではfalseになってしまいます。両方ともCentOSでバージョンも同じ。PHPもバージョンも同じです。

    $path_name = Configure::read('Pdf.upload_dir') . $fileName;
    if( is_file($path_name) ){
        :
        :
    

    このようなCakePHPのコードです。デバックすると正しくパスからファイル名が設定されています。

    ふと気なったのは、ファイル名の後ろに空白が入っていた。まさかと思ってtrim()で空白をカットしてみる。

    するとうまくいった。だけど、どうしてローカルで動いていたかは謎です。

  • phpMyAdminでログインできない問題の話し

    テストサーバーを作りたくて、いろいろとインストールします。しかし、phpMyAdminがログインできない問題に遭遇。「phpMyAdmin ログインできない」でGoogleさんに聞いた結果のサイトに書いてある通り phpMyAdmin の config.inc.php の設定ファイルを変えてもダメ、MySQLの認証を設定設定してもダメ。

    しかたないので、一旦phpMyAdminを削除して、再度インストール。これもダメ。phpMyAdminの最新版をソースからダウンロードしてインストール。こちらはMySQLが古いと怒られてダメ。もうダメダメです。

    ふと、Apahceのエラーログを見てみると、

    [Tue Sep 23 16:46:03 2014] [error] [client 192.168..xxx.xxx] PHP Warning:  Unknown: POST Content-Length of 104 bytes exceeds the limit of -1048576 bytes in Unknown on line 0, referer: http://192.168..xxx.xxx/phpmyadmin/index.php
    

    というのが出ていた。Unknown: POST Content-Length of というのをまたまた Googleさんに聞いてみると、php.ini の post_max_size の値が小さいとのこと。今、設定している post_max_size の値を確認してみる。すると、

    ; Maximum size of POST data that PHP will accept.
    ; http://www.php.net/manual/en/ini.core.php#ini.post-max-size
    post_max_size = 3232323232323232323232323232323232323232323232323232323232323232M

    となっていた。こらー誰が設定した???

    post_max_size = 32M

    に設定すると、無事にphpMyAdminにログインできた。phpMyAdminの問題というよりも、PHPの問題。やはり、ログを見ることは大事。

    著:山田祥寛
    ¥3,366 (2025/03/12 08:20時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/03/16 09:41時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/03/12 08:21時点 | Amazon調べ)
  • #baserCMS のPDFリンクプラグインを作成した話し

    baserCMS公式サイト

    10年以上お付き合いしている会社の株主向けのサイトを運営しているのですが、そろそろリニューアルしましょうということになりました。今まではベタにPHPを使って書いていましたので、キチンとPHPのフレームワークを使って作成することにします。PHPのフレームワークといっても、CakePHPしか知らないので、CakePHPで作成してきます。

    CakePHPの上で作っていくのもいいのですが、今回はCakePHPの上で動いているbaserCMSというコンテンツ管理システムの上で作成して行きます。会社のサイトですので、Wordpressのように時系列で記事を並べていくのではなく、固定ページ中心ですので、WordpressではなくbaserCMSが丁度いいのです。

    しかし、会社サイトといっても、株主向けのサイトでもありますので、PDFファイルのIR情報やニュースリリースを掲載しなければいけません。しかも、IR情報というのは面倒なもので、証券取引所からのお達しで発表時間よりも、PDFファイルを前に見せることは厳禁です。IR情報を見て株の売買をするのですから、発表前の情報を手に入れられてしまうことは御法度です。

    そこで、PDFファイルを時間によって記事リストを生成できるようなことを実現します。時間での表示管理はbaserCMSにデフォルトでインストールされているブログプラグインに、日付でアクセス制限をする機能がありますので、こちらを利用することにします。

    今回はブログブラグインにPDFファイルを登録できるようにしました。ブログプラグインのpostテーブルにPDFファイル名の項目を追加して、プラグインを直接改造する訳にはいかないので、PDFリンクプラグインを別途開発して、postテーブルに1対1でPDF情報を格納するテーブルを用意しました。これでbaserCMSがアップデートした場合にも対応できます。

    ブログプラグインの管理ページでPDFファイルを指定してファイルをアップできる機能を、PDFリンクプラグインとして追加しています。同じような機能を持ったプラグインを探しても見つからなかったので自分で作ることにしました。もしも、存在したならば、今回はbaserCMSのプラグインの開発のスキルを習得できたということでよしとしましょう。

    作成したbaserCMSのPDFリンクプラグインをGitHubに置いておきます。

    https://github.com/muneando/basercms-plugin-pdf

    ご自由にお使いください。バグを見つけたり機能アップしたら、GitHubから連絡ください。ただし、今回のサイトを作成するにあたっての必要最上限の機能しか実現していませんので、機能アップをしていただければ、大変うれしいです。

    ページ内で表示するPDFファイルへのリンクは、PDFリンクプラグインのヘルパーで実現しています。ブログの本文とPDFファイルをどちらを優先してリンク先で表示できるかを、PDFリンクプラグインの管理ページで指定できます。前述の通りPDFファイルへの直リンクはダメですので、ユーザーがアクセスできないところにPDFファイルを置いて、PDFファイルをダウンロードする前に、時間をチェックできるようにしています。

    使い方の説明は、GitHub の README.md をご覧ください。

    このプラグインの作成で参考したのは、materializing 氏の Keyword プラグインです。参考というよりも、baserCMSのプラグインのイベント辺りは丸写しです。おかげでCakePHPのイベントについて理解できました。materializing 氏には、baserCMSのプラグインについて相談に乗っていただき感謝です。

    実際に動いているサイトは、まだテスト段階なので公開していません。PDFリンクプラグイン以外にも、IRカレンダーを表示するためのbaserCMSブラグインも作成してしましました。もし、お客さんにOKいただいたら、baserCMSの利用例としてご覧いただけるようにします。

  • お客さんからディスクが一杯でSOSがあった話し

    昔のお客さんから連絡があった。サーバーのディスクが一杯で、サーバー会社から警告があって、どうしたらいいかとSOSがあった。

    1年と半年前に、私がサーバーの移行をした。すっかり忘れている。Evernoteからインストールメモを引っぱり出して、サーバーにアクセスして現状を把握する。どんなことをやったかはEvernoteにメモをとっていると後で役立つ。

    サーバーの中を見ていると、MySQLのバイナリログがたくさん出ていて、これがディスクを一杯にした原因。これで報告。あとはお客さんが何とかするでしょう。これ以上の作業は、お金をいただく。

    Evernoteのメモによると、このサーバーはPleskというサーバー管理ソフトでWebサーバーとか、MySQLのデータベースとか、サブドメインとかを作成している。Pleskは簡単かもしれないけど、どんなことをしてくれているかわからないので。後々厄介である。メールサーバー周りの設定はいいけど、あとは自分で設定して行ったほうが逆にわかりやすいかもしれない。

    一度、自分のところのPleskが動いているサーバーで、PHPのバージョンアップをしたら、二度とPleskが起動できないことをやったことがある。おかげでそのサーバーは解約した。

     追記(2014/08/08)

    今サーバーを除いたら、残りが67%になって増えていた。お客さんのほうで対応したようだ。

  • baserCMS のテーマ配置場所がドキュメントルートの下だった話し

    CakePHPでサイトを作成していると、静的ページの編集追加も自分で作らないといけないし、お客さんでも編集可能にしたり、その他諸々便利そうだからということbaserCMSをプラットフォームにしてみたらどうなるかとインストールしてみた。

    しかしながらbaserCMSのテーマ配置場所がドキュメントルートの下にあるということはちょっと驚いた。ビューの下ではないのね。CakePHPのテーマの機能は使っていないのかな。

    もしかしたら、.htaccessにゴチョゴチョ設定されているから直接ファイルにアクセスできないようにしているとか思ったらそうではなかった。もしかしたらブログでアップロードされたファイルもwebrootのfilesの下に入ってしまうのかな。

    何かbaserCMSのドキュメントに書かれていないようなテーマの配置場所を変更する設定方法があるのだろうか?

    著:山田祥寛
    ¥3,366 (2025/03/12 08:20時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/03/16 09:41時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/03/12 08:21時点 | Amazon調べ)
  • CakePHPのDebugKitの表示がページの下に表示されるときの対応の話し

    CakePHPのDebugKitプラグインですが、正常に動いていると右上にアイコンが表示されます。

    CakePHPのバージョンが2.4.7で現時点の最新版のときにインストールすると、Debug Kitプラグインで表示される内容がページに下に丸見えになってしまいました。

    Debug Kitプラグインのインストールも正しく行っていると思っていましたが、プラグインから書き出しているwebroot以下のdebug_kitディレクトリに設置されているJavaScriptファイル、CSSファイル、画像ファイルが、すべて404 File not foundになっていました。

    調べてみるとDebug KitプラグインのGitHubでも同じことで悩んでいる人がいました。結果として、/app/COnfig/bootstrap.php に以下のコードを付け足せば、正しくDebug Kitプラグインの結果が表示されます。

    Configure::write('Dispatcher.filters', array(
    'AssetDispatcher',
    'CacheDispatcher'
    ));
    

    Dispatcher.filtersがどういう役割をしているかよくわかりませんが、CakePHPのドキュメントのプラグインアセットのページと、SildeShareのこのページが参考になるかもしれません。

    ただし、Vagrantの共有フォルダで開発しているため、シンボリックリンクでの設定はできませんでした。

    著:山田祥寛
    ¥3,366 (2025/03/12 08:20時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/03/16 09:41時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/03/12 08:21時点 | Amazon調べ)
  • PHPで西暦を和暦に変換する処理を書いた話し

    西暦を和暦に変換する処理を書きました。

    <? php echo "平成". (date("Y") - 1988) . "年", date("n月j日"); ?>
    
    平成26年3月27日

    本当だったら、西暦和暦変換関数なんてゴリゴリ書かなければいけないのですが、現在の日付を変換するだけで過去の年号に対応しなくてよい処理なので、これでよしとしました。よくあるサンプルだと、大正、明治、慶応とか変換してくれるものがありますが、あまり複雑にしても仕方ないのでシンプルにしました。シンプルが大事。コードを見て、ふざけんな、と言う人がいるかもしれません。だって、昭和の年(1988年以前)だったら、マイナスの年になりますから・・・。

    ただし、いずれにしても平成でなくなったら対応する必要があります。

    和暦は面倒なので西暦でやりたいのですが、お客さんのご希望なので仕方ありません。

    著:山田祥寛
    ¥3,366 (2025/03/12 08:20時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/03/16 09:41時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/03/12 08:21時点 | Amazon調べ)
  • CentOS4.8のVagrantのBoxを公開した話し

    CentOS4.8のVagrantのBoxを公開します。以下のDropboxの公開URLからダウンロードできます。

    https://dl.dropboxusercontent.com/u/119035940/CentOS-4.8-i386-ja.box

    Boxは、veeweeで作っています。veeweeのテンプレートは、私のGitHubにフォークしたものを公開しています。元のリポジトリの人にpull requestをしていますので、いつか取り込まれるかと思います。しかし、最終更新が2年前の大昔なので、とりあえず自分のリポジトリを公開しておきます。

    https://github.com/muneando/veewee-definitions

    PHP4を使ったサイトの開発環境を作らなければいけないとか、どうしても古い環境を手に入れなければいけない場合にお使いください。

    Virtual BoxやVagrantが必要ですが、今はいろいろとサイトに情報がありますので、適当に調べて使ってください。

    著:大竹 龍史, 著:山本 道子
    ¥2,950 (2025/03/14 11:16時点 | Amazon調べ)
    著:Piro, 編集:日経Linux
    ¥2,178 (2025/03/14 11:16時点 | Amazon調べ)
    著:三宅 英明, 著:大角 祐介
    ¥2,970 (2025/03/14 11:16時点 | Amazon調べ)