5丁目通信(仮称)

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

タグ: PHP

  • CakePHPのサイトをサーバーに配置してはまった話し

    ローカルPCで開発していたCakePHPのサイトをサーバーに配置したら動かなかった。対応していく過程のメモ。

    まずはPHPのバージョン。最新のPHP5.3にしたのは間違え。大量にエラーをはく。これは使っているCakePHPのバージョンがPHP5.3に対応していないため。以下のページに対応方法が書いてある。

    PHP 5.3だとCakePHPで大量のエラー

    あまりいじりたくないので、PHPのバージョンを下げる。前の記事のようにPHPの複数のバージョンを切り替えるようにしておく。インストールしてあったバイナリのMySQLとPostgreSQLの指定の方法がわからないので、こちらもソースからコンパイルしなおし。

    次はページが真っ白になったり、ページが見つからなっている。mod_rewriteが動いていないことが判明。httpd.confでのパスの指定が間違えていた。単純なミス。

    以上、一日テストサーバーの構築で潰れた。プログラムの修正は半日で済んだのに・・・。

    著:山田祥寛
    ¥3,366 (2025/04/25 12:34時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/04/25 12:34時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/04/25 12:34時点 | Amazon調べ)
  • 違うPHPのバージョンを切り替えできるようにした話し

    昔CakePHPで作成したWebサイトの機能追加を行っているのですが、そのサイトはPHP4なのです。テストするため、PHP4の環境が必要です。

    PCですとXAMPPで一発インストールなのですが、みんなで参照するLinuxサーバーではそうはいきません。今まではyumで簡単にインストールしていきましたが、PHP4は古いバージョンなのでyumでのパッケージインストールもできません。

    しかたないのでソースからコンパイルです。PostgeSQLとかMySQLもソースからインストールしていきます。今回はとても時間がかかる。PHP4 だけではなく、いまはPHP5 もテストで使うであろうと考えて、切り替えるようにしておきます。参考になったのは、

    【PHP】複数バージョンのPHPを使う方法

    です。違いはApacheがパッケージでインストールしているとか、PHPのバージョンの違いです。

    以上、自分が設定したことを忘れそうなので、手順はEvernoteにメモしておきます。

    著:山田祥寛
    ¥3,366 (2025/04/25 12:34時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/04/25 12:34時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/04/25 12:34時点 | Amazon調べ)
  • XAMPPの昔のバージョンに再インストールした話し

    開発でロカールのPCにはXAMPP(Apache+MySQL+PHP、後はPerlだっけ?)をインストールしてお手軽に開発環境を作っています。

    お客様の依頼で、ずいぶん昔に作ったサイトのメンテナンスをやることになりました。しかし、今の開発環境では動かない。おそらくPHP4で動いているのでPHP5では動かないのは当たり前。

    そこで、PHP4に戻してみます。XAMPPのページには、「PHP5とPHP4と切り替えが可能だぜ。」と書いていますが、これは真っ赤なウソ。PHP4とPHP5を切り替えるphp-switch.batというバッチファイルが見当たりません。今のXAMPP1.7.xではPHP5のみになっています。

    おかげでXAMPP1.6.8まで戻さなくていけません。戻すときには、MySQLと、Apacheのhttpd.confのバックアップを忘れずに。MySQLのデータベースは、\mysql\data以下のディレクトリをコピーすれば、そのままテーブルがインポートできました。XAMPP1.6.8はセットアッププログラムではなくて、解凍したディレクトリ以下のファイルをコピーするだけなので、インストールは簡単かもしれません。本来は本番サーバーの環境とバージョンを合わせなければいけませんが。

    無事にテスト環境で動くようになりました。PHP5への対応は大変そうだな。

    著:山田祥寛
    ¥3,366 (2025/04/25 12:34時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/04/25 12:34時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/04/25 12:34時点 | Amazon調べ)
  • アップデートできない件でEvernoteからサポートの回答があったが解決しなかった話し

    Evernote4.2.2にアップデートできない」と書きましたが、早速Evernoteのサポート担当者から連絡が入りました。何て早い対応なの。

    そっくりそのまま解決方法のメール内容をコピペします。

    1. Evernoteが起動中の場合はメインメニューの「ファイル」>「終了」よりアプリケーションを終了してください。
    2. 画面左下のWindowsスタートボタンから「コントロールパネル」を開き、「プログラムと機能」を選択してください。(Windows XPの場合は「プログラムの追加と削除」)
    3. Evernoteを選択し、アンインストールしてください。
    4. アンインストールが完了しましたら、パソコンを再起動してください。
    5. 下記のURLより最新のWindows版のプログラムをダウンロードし、インストールしてください。
      http://www.evernote.com/about/download/get.php?file=Win

    しかし、解決しなかった。5.でダウンロードしたファイルが一つ前の4.2.1なのです。結局はアップデートしなければいけないのは変わらず、いざ4.2.2にアップデートすると。起動できなくなるのです。4.2.2をアンインストールしなければ、元の4.2.1に戻らない。

    次の指示通り、PCを再起動しても症状は変わりませんでした。

    4.2.2が直接ダウンロードしてインストールできるまで、待ちとなります。他のPCではうまくアップデートができたので、もしかしたら、こちらのPCが原因かもしれません。

    著:田口 和裕, 著:古市 威志
    ¥1,518 (2025/04/24 11:34時点 | Amazon調べ)
    著:コグレマサト, 著:いしたにまさき, 著:堀 正岳, 著:できるシリーズ編集部
    ¥891 (2024/01/05 15:27時点 | Amazon調べ)
  • Evernote が4.2.2にアップデートできない話し

    EvernoteのWindowsのアプリケーションですが、メニューの「ヘルプ」ー「更新の確認」で見たところ、4.2.2(127835)が出ていました。

    Evernote

    いつものようにアップデートしたところ、前のバーションである4.2.1(122872)を削除したところは確認できましたが、正常にアップデートできませんでした。スタートメニューからEvernoteのアプリケーションが消えています。

    仕方ないので、Evernoteの最新版をダウンロードしたところ、まだ4.2.1でした。インストールしようとすると、既にインストールしている、と怒られます。またまた、仕方ないので、Evernoteを削除してから再インストールです。削除したEvernoteのアプリケーションは4.2.2でした。

    つまり、元に戻っただけ。この件はEvernoteに報告しておきました。自分のPCだけでしょうか?

    著:田口 和裕, 著:古市 威志
    ¥1,518 (2025/04/24 11:34時点 | Amazon調べ)
    著:コグレマサト, 著:いしたにまさき, 著:堀 正岳, 著:できるシリーズ編集部
    ¥891 (2024/01/05 15:27時点 | Amazon調べ)

    追記

    Googleバズからの情報で、対応したプログラムがEvernoteのサイトにアップされたようです。

    Evernoteのサポートからも修正されたビルド(4.2.2.3913)がリリースされたことの連絡がありました。

    これで私のPCでも無事にアップデートができました。

  • PHPExcelではまったこと2点の話し

    今、開発している案件でレポートをMySQLからデータを取得してPHPで加工してExcelファイルに書き出すなんてことをしています。テンプレートのExcelファイルを読んだり書いたりために、PHPExcelというライブラリを使っています。

    PHPExcelを使って、はまったことが2つありました。一つはExcelファイルの特性かもしれません。

    1点目。テンプレートのExcelファイルを更新してPHPExcelで読み込んでみても更新した前の内容のまま。

    これは、Excelファイルの中にある元の履歴データからデータを取得しているようです。対処方法は、「名前を付けて保存」で上書き保存しました。もっとよい方法があるかもしれません。

    2点目。セルに1文字だけだとUnknown Errorでそのセルが読み込めない。

    これはPHPExcelの内部で使っているiconv_substr()のバグでしょうか? とりあえずセルを2文字以上に設定しています。PHPExcelのソースをいじればいいのでしょうね。

    PHPのプログラミングに関係していない人には関係ない、自分のための覚え書きでした。

    著:山田祥寛
    ¥3,366 (2025/04/25 12:34時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/04/25 12:34時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/04/25 12:34時点 | Amazon調べ)
  • CakaPHP。また同じことで悩んでいた

    だめじゃないか。自分。また同じことで悩んしまうなんて。半日無駄にした。同じことで繰り返して悩むなんて、このブログの意味はないではないか。

    著:山田祥寛
    ¥3,366 (2025/04/25 12:34時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/04/25 12:34時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/04/25 12:34時点 | Amazon調べ)
  • CakePHPでの多数レコードへのバッチ処理をした話し

    現在、テストフェーズに入っているサイトで不具合発見。6万レコードのテーブルに対して再処理を行う必要があります。

    CakePHPで開発しているので、すべてのレコードをfind(“all”)で取得してから処理するのでは、おそらくメモリのオーバーフローで止まることは確実です。そこで、レコードを分割して取得して処理することにします。

    CakePHPのモデルに対するfindメソッドはよく使うのですが、意外とパラメータに関してはマニュアルに丁寧に説明してくれていません。

    しかし、

    array(
      'conditions' => array('Model.field' => $thisValue), //条件の配列
      'recursive' => 1, //int
      'fields' => array('Model.field1', 'DISTINCT Model.field2'),     //フィールド名の配列
      'order' => array('Model.created', 'Model.field3 DESC'), //文字列か配列でのorder定義
      'group' => array('Model.field'), //GROUP BYするためのフィールド
      'limit' => n, //int
      'page' => n, //int
      'offset' => n, //int
      'callbacks' => true //false, 'before', 'after'が指定できます。
    )
    

    MySQLを使っているのであれば、limit,offsetは想像付くのですが、pageって何?っていうところでしょうか?

    CakePHPのソースファイル(cake/libs/model/model.php)のfind()の部分を読むとわかるのですが、page(ページ数)とlimit(表示レコード数)を指定すれば自動的にoffset(先頭からのレコード位置)を計算してくれるのでした。

    他にマニュアルにないパラメータがあるかもしれませんので、CakePHPのソースは読んだ方がいいかもしれません。といいながら、callbacksは何をするのか自分はわかりませんが。

    著:山田祥寛
    ¥3,366 (2025/04/25 12:34時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/04/25 12:34時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/04/25 12:34時点 | Amazon調べ)
  • EclipseのPHPDocのコメント生成が直っていた、という話し

    今、PHPの開発ではEclipse-PDTで開発しています。開発の中でずっと気になっていたのは、自動的にPHPDocのコメントを作ってくれるところ。今までは、

    /**

    と入れると、自動的にPHPDocのコメントを生成してくれるのだが、正しく生成してくれなかった。

    /**
    *
    */
    *
    */

    な感じ。結局、入れ直し。

    今、やってみたら、うまいこと直っていた。

    /**
    *
    * Enter description here ...
    * @param unknown_type $id
    */

    いい感じです。Eclipseがアップデートしたのがよかったのか、Subversiveを再インストールしたのがよかったかわからない。

    著:山田祥寛
    ¥3,366 (2025/04/25 12:34時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/04/25 12:34時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/04/25 12:34時点 | Amazon調べ)
  • CakePHP: The requested address AjaxURL was not found on this serverが出た話し

    CakePHPではまったことの覚え書きです。CakePHPに興味なければ飛ばしてください。

    サーバーにAjax関係をCakePHPで実現して、ファイルをアップしたとき、ブラウザのデバックを見るとAjaxのURLが404でエラーが返ってきました。URLを単独で実行すると

    The requested address "AjaxのURL" was not found on this server.

    とエラーになります。いろいろと検索してみると、

    • app/tmp/cache/modelsの下のファイルを削除する。
    • app/tmpのパーミッションを777にしろ。

    など出てきますが、どうもうまくいきません。

    結局、基本に戻ってajaxで呼び出されるアクションの

    Configure::write('debug', 0);

    Configure::write('debug', 3);

    にデバッグモードにしてみると、何のことはない、このアクションのViewファイルが作成されていないだけでした。

    こんなことで、3時間も無駄にしてしまいました。基本に戻ることが大事です。

    著:山田祥寛
    ¥3,366 (2025/04/25 12:34時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/04/25 12:34時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/04/25 12:34時点 | Amazon調べ)