5丁目通信(仮称)

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

タグ: PHP

  • CandyCaneの代替としてRedmineをインストールしようとしたけど、やめた話し

    普段、プロジェクトの課題管理をCandyCaneで行っているけど、そろそろCandyCaneはプロジェクトとして収束の方向に向かっているので、新しいソフトウエアを探さないければいけない。

    課題管理のソフトウェアだから、どの課題(チケット)が終わっていないのかをわかるようにすることは当たり前だけど、一番は課題が何時間かかったかを集計する必要がある。作業時間の集計結果で、お客さんに作業費を請求している。大抵のプロジェクト管理ソフトウェアの売りであるガントチャートなんて要らない。ほぼ一人で利用するので、他ユーザーとのコラボレーションの機能も要らない。課題の状態(ステータス)も、「新規」「担当」「解決」「終了」くらいで、カンバンとか必要ないし、状態の一覧(終了していいない課題)があればよろしい。そのくらい限定した機能で十分なのである。

    CandyCaneは課題ごとに経過時間として作業時間を登録できる。期間で作業時間を集計してCSVに出力できる。CandyCaneはとてもシンプルで気に入っている。

    課題管理のソフトウェアとしてアトラシアンのJiraなどを調べてみたけど、作業時間の集計の機能で満足できない。単純に、課題に何時間使っただけの集計だけでいいのに、余計な機能が付き過ぎている。

    結局はCandyCaneの元になったRedmineを検討する。しかし、Redmineの一番のネックはRubyで動いていることである。今までRubyの動いているソフトウェアでまともにインストールできた試しがない。特にRubyの環境を作るのに断念している。そして、簡単にそこら辺のレンタルサーバーで動かないのは辛い。

    CandyCaneが動いているさくらインターネットのVPSのサーバーでRedmineを動かそうとしたが、案の定ライブラリが古いとかでインストールができなかった。ライブラリをあげても、せっかく今正常に動いているCandyCaneのサイトが動かなくなってしまうのは癪だから、これで中断する。

    別にサーバーを契約するか(そんなにコストをかけたくないし)、あらかじめRedmineを提供しているサービスを利用するか(こちらももっとコストがかかるし)、はたまた社内にサーバーを立てるか(運用が面倒だし)を考えることにする。

    Redmine以外にまだプロジェクトの課題管理のソフトウェアを引き続き探していく。このままだとCandyCaneのままでいきそう。だけど、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調べ)

    続きはこちらから

    結局はCandyCaneからRedmineに乗り換えました。

  • 自分のサイトをIPv6対応にした話し

    せっかくIPv6でアクセスできるようになっても、全然どこのサイトもIPv6に対応していないじゃねーか、とぼやいている前にここのサイトをIPv6に対応しておく。

    ここのサイトは、さくらインターネットのさくらのレンタルサーバーを使っているから、簡単にIPv6に対応できる。「ドメイン/SSL設定」からドメインを選んで、「変更」ボタンを押す。出てきた画面で「IPv6アドレスを利用する」にチェックをして、「送信」ボタンで確定する。これでWebサーバーの設定は完了。あとはDNSレコードにAAAAレコードを追加すればIPv6化できているはず。

    ヤマハ(YAMAHA)
    ¥147,000 (2025/04/25 16:07時点 | Amazon調べ)
    ヤマハ(Yamaha)
    ¥39,800 (2024/01/08 10:01時点 | Amazon調べ)
    ヤマハ(Yamaha)
    ¥92,800 (2025/04/29 20:43時点 | Amazon調べ)

    拠点間や法人向けルーターは、ヤマハのルーターが信頼性があってお勧めしています。私もヤマハのルーターを使っています。

    でも、本当にIPv6でアクセスできているかだけど、今までのIPv4と同じ画面だから違いがわからない。さくらのレンタルサーバーだからアクセスログは明日ではないと出てこないので、仕方ないのでphpinfo()を入れてみた。Apacheの環境変数を見ると、無事にIPv6でアクセスできているみたい。

    以上で本サイトのIPv6対応は簡単だった。だけど見た目がわからないので特に達成感の感動はなし。

    PPPoEではなくてIPoEで接続するから、混んでいるIPv4のPPPoEよりはIPv6のほうが少しは快適になるはず。だからみんなもIPv6に対応しなさいよ。

  • BackWPupプラグインでエラーが出るので対応した話し

    BackWPupプラグインでエラーの通知が来た。BackWPupはWordPressの自動バックアッププラグイ。実はエラーを出ていても、しばらく放っておいたけど。

    エラーが出ていると何か気持ち悪いので対応する。BackWPupの管理画面に入ると、「mysqliがどうしたこうしたと」警告が出ていた。これを手がかりに対応する。

    BackWPupのジョブを直接実行すると

    「エラー: ステップを中止: 回数が多すぎます」

    とエラーメッセージが表示する。こちらを手がかりにしたほうが簡単に対応方法が見つかった。

    要はPHPのバージョンが古くてmysqliのPHP拡張モジュールを対応していないからMySQLに接続しようとするとタイムアウトになっているとのことだった(だいぶ意訳)。

    このWordPressのサイトはさくらインターネットのレンタルサーバーを使っているけど、最初にPHP7を入れたはずだけどと思ってphp -vを打ってみると5.6だった。つまりPHPのバージョンが古いのが原因だった。

    さくらインターネットのサーバーコントロールでPHPのバージョンを7.2に切り替えてみる。実はこれは危険。思いつきで切り替えてはダメ。案の定WordPressのサイトにアクセスすると、画面が真っ白になってしまう。

    「ああ、やってもうた・・・」と思ったけど気を取り直して、さくらインターネットのサーバーコントロールからPHPのバージョンを5.6に戻してみる。これは無事にアクセスできて元通り。この辺りはレンタルサーバーの気軽で簡単なところ。もし、専用サーバーだったら、PHPのバージョンを元に戻すは大変だろうな。

    おそらくプラグインが悪さしているのだろうと思って、めぼしいプラグインを無効にしておく。PHPを7.2に切り替えると、今度は無事にアクセスできる。

    一つづつプラグインを有効にしてみて、PHP7.2に対応していないプラグインを探してみる。インストールしていて対応していていないプラグインは、

    • Google+Blog
    • spam-byebye

    の2つだった。

    spam-byebyeは、もう古いしWordPressのJetPackでスパムコメントの対応はできていそうなのでもう必要ない。

    痛いのはGoogle+Blogである。こいつはいくらかお金を払ってインストールしたもの。Google+(みなさん使っていないと思うが、実は自分が利用している唯一のSNS)から記事を自動的に取得して投稿してくれる連携プラグインである。このままではGoogle+Blogプラグインを有効にするとサイトにアクセスできなくなるので、したかないけど無効にしておく。Google+Blogプラグインのサポートサイトを見てみると、Error 502になるので、既にサポート終了になってしまっている。WordPressからG+へは自動投稿できているからよしとする。

    以上でPHP7.2の対応完了。本件の始まりだったBackWPupプラグインのエラーはなくていた。ジョブを直接実行してみると正常にバックアップができていた。

  • WordPressのメディアライブラリで新規追加するとHTTP エラーになる話し

    ここのWordPressのサイトでメディアライブラリから画像ファイルを新規追加するとHTTP エラーが出てしまいました。心当たりは全くありません。

    さて、Googleさんに聞くといろいろでてきます。

    などなど。

    Webサーバーのエラーログを見ましたが、エラーは出ていませんでした。何かfunction.phpが怪しいとのことでしたが、WordPressのテーマのままでした。

    とりあえず、別のテーマにしてみると、今度はうまくファイルをアップロードできるようになりました。テーマを元に戻してみると、これも成功しました。

    以上、原因不明で解決できてしまいました。結局テーマを一度別のテーマにしたら解決でした。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/04/30 10:35時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

  • Laradockを使ってCakePHP3+Xdebug+VS Codeの開発環境を構築した話し

    CakePHP3で作りたいものがあったので、CakePHP3の開発環境を簡単にDockerを使って構築しようと思い立った。最初は自分でdocker-compose.ymlを作成してコンテナを起動してみたけど、どうしてもXdebugでデバッグができなかった。

    たまたまLaradockという本来はLaravelフレームワーク用のDockerコンテナキットを見つけた。最後にcomposerでLaravelの代わりにCakePHPをインストールできるらしいからLaradockを使ってみた。LAMP関連(今回はAではなくnginxだけど)のコンテナが全部入りだから(MySQLだけではなくて、PostgreSQLやSQL Serverもある)、自分でdocker-compose.ymlを書くよりはいいだろうと思った。

    参考までにこれから構築していく自分の環境は以下の通りである。ここにLaradockを使ってCakePHP3+Xdebug+VS Codeの開発環境を構築する。。

    Windows 10 Pro 64 bit
    Docker version 17.12.0-ce, build c97c6d6
    docker-compose version 1.18.0, build 8dd22a96

    以下はいろいろと参考にしたサイトからつまみ食いしなから設定を行った部分を抜き出してまとめていく。

    Laradockの設定は、こちらのサイトを途中まで参考にした。

    PHPフレームワーク「Laradock」で、手軽にLaravel+Dockerな開発環境を構築する

    株式会社LIG|東京のWeb制作・システム開発・オフショア開発会社

    gitのcloneでLaradockをインストールしている。次にLaradockでCakePHP3に関する設定を行うには、こちらのサイトを参考にした。

    LaradockでPHPフレームワーク(Laravel・CakePHP)とCMS(WordPress・Drupal・baserCMS)の開発環境(nginx・php-fpm・mysql)を構築する

    Qiita

    .envをコピーして設定して、これでインストール完了ですと言えないのは、コピー&ペーストインストールのいつものこと。このままではphpMyAdminからMySQLコンテナに接続できないとか、細かい問題があった。そしてXdebugでPHPのデバッグをやりたかったので、いろいろ設定を追加していく。

    まずは、上記の2つのサイトを参考にしてLaradockをインストールする。自分のところでは、今までの作業でディレクトリはこのようになっている。

     /laradock-test
     ├── laradock
     └── src

    .envの設定だが、設定の一番のポイントはポート番号を重ならないこと。既にローカルでPHP+Xdebugが動いていたようなので、ポート番号の指定で嵌まった。使っていないポート番号を設定しておく。以下に今回設定した.envのnginx, MySQL, phpMyAdminの設定を上げておく。

     ### NGINX
     NGINX_HOST_HTTP_PORT=8082
     NGINX_HOST_HTTPS_PORT=443
     NGINX_HOST_LOG_PATH=./logs/nginx/
     NGINX_SITES_PATH=./nginx/sites/
     NGINX_PHP_UPSTREAM_CONTAINER=php-fpm
     NGINX_PHP_UPSTREAM_PORT=9000
    
    ## MYSQL
     MYSQL_VERSION=5.7
     MYSQL_DATABASE=default
     MYSQL_USER=default
     MYSQL_PASSWORD=secret
     MYSQL_PORT=3333
     MYSQL_ROOT_PASSWORD=root
     MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
    
    ### PHP MY ADMIN
     # Accepted values: mariadb - mysql
     PMA_DB_ENGINE=mysql
     # Credentials/Port:
     PMA_USER=default
     PMA_PASSWORD=secret
     PMA_ROOT_PASSWORD=secret
     PMA_PORT=8083

    使っていない別のポート番号に設定し直しておく。MYSQL_VERSIONは元の設定の8.0だと認証で失敗してしまったので、8.0ではく5.7に設定したら認証ができた。こちらは何か別のよい方法があるかもしれない。

    WORKSPACEとPHP_FPM の設定は以下の通り。修正した箇所だけを上げておく。

     ### WORKSPACE
     WORKSPACE_INSTALL_XDEBUG=true
    
     ### PHP_FPM
     PHP_FPM_INSTALL_XDEBUG=true
     PHP_FPM_INSTALL_INTL=true

    Xdebugを使うのでWORKSPACE_INSTALL_XDEBUGとPHP_FPM_INSTALL_XDEBUGをtrueにして(PHP_FPM_INSTALL_XDEBUGだけでもいいかも?)、PHP_FPM_INSTALL_INTLはCakePHP3で必要なのでtrueにしておく。

    .envの設定の最後として、CakePHP3のインストール先のディレクトリも設定しておく。

    # Point to your code, will be available at `/var/www`.
    APPLICATION=../src/

    nginxのドキュメントルートを修正する。設定するファイルは以下のファイルである。

    .\laradock\nginx\sites\default.conf

    こちらのrootの設定を、CakePHP3のリモート側のドキュメントルートのディレクトリに設定する。今回のプロジェクト名をmycakephpとしておく。

    root /var/www/mycakephp/webroot;
    ここで一度Docker composeを実行してコンテナを起動しておく。
    docker-compose up -d nginx mysql phpmyadmin

    workspaceコンテナにログインして、composerを使ってCakePHP3をインストールしておく。こちらは参考サイトの通り。

    LaradockでCakePHPの開発環境(nginx・php-fpm・mysql)を構築する

    Qiita

    ここではサイトに書いてある通り、以下のコマンドでプロジェクトmycakephpでCakePHP3をインストールした。

     $ composer self-update && composer create-project --prefer-dist cakephp/app mycakephp

    nginxからCakePHP3のサイトを参照できるかチェックする。OKならCakePHP3の初期画面が見えるはず。

    データベースの接続の設定を.\src\mycakephp\config\app.phpにしておく。

    'Datasources' => [
    
        'default' => [
           :
        'host' => 'mysql',
           :
        'username' => 'default',
        'password' => 'secret',
        'database' => 'default',
           :

    このような感じで.envのMySQLの設定に合わせておけば、データベースに接続が成功はずである。

    phpMyAdminも確認しておく。こちらも.envのMySQLの設定通りにすればログインできてMySQLの中を参照できるはずである。もちろん、MySQLのパスワードは適当なものに変えること。

    サーバ:mysql
    ユーザ名: root
    パスワード: root

    MySQL Workbenchからも接続を確認できた。以下の接続情報でWindowsローカルで接続できた。

    Hostname:localhost
    Port: 3333
    Username: root
    password: root

    最後にXdebugの設定である。Xdebugのコンテナ側の設定ファイルは次の2つである。同じ内容でコピーすれば大丈夫だった。

    .\laradock\php-fpm\xdebug.ini
    .\laradock\workspace\xdebug.ini

    自分が設定した内容は以下の通りである。とりあえずプロフィラの設定も含めて設定しておく。

     xdebug.remote_host=172.27.7.81
     xdebug.remote_port=9002
     xdebug.idekey=Listen for XDebug
    
     xdebug.remote_autostart=1
     xdebug.remote_enable=1
     xdebug.remote_connect_back=0
     xdebug.cli_color=1
     xdebug.profiler_enable=1
     xdebug.profiler_output_dir="/var/www/mycakephp/tmp"
    
     xdebug.remote_handler=dbgp
     xdebug.remote_mode=req
    
     xdebug.var_display_max_children=-1
     xdebug.var_display_max_data=-1
     xdebug.var_display_max_depth=-1

    ここでわからなかったのはxdebug.remote_hostの値だった。結論としてはこちらはWindowsの場合、

    ipconfig

    で表示されるDocker側の仮想スイッチのアドレスの値を設定しておく。Googleさんに「xdebug リモートデバッグ」で検索して、よく出てくるサイトに書かれている$_SERVER[‘HTTP_X_REAL_IP’]とか$_SERVER[‘REMOTE_ADDR’]の値ではないので注意すること

    xdebug.remote_host = host.docker.internal
    xdebug.remote_connect_back=1
    xdebug.remote_port=9002
    xdebug.idekey=Listen for XDebug
    
    xdebug.remote_autostart=1
    xdebug.remote_enable=1
    xdebug.remote_connect_back=0
    xdebug.cli_color=1
    xdebug.profiler_enable=1
    xdebug.profiler_output_dir="/tmp"
    
    xdebug.remote_handler=dbgp
    xdebug.remote_mode=req
    
    xdebug.var_display_max_children=-1
    xdebug.var_display_max_data=-1
    xdebug.var_display_max_depth=-1

    xdebug.remote_hostの設定は、最近新しくDockerのための設定が追加されたようなので、こちらは難しいことをせずにhost.docker.internalを指定しておく。これでうまくデバッグができるようになった。

    docker-compose stop
    docker-compose build php-fpm workspace

    でphp-fpmとworkspaceのイメージをビルドしなおす。ビルドできたら、

    docker-compose up -d nginx mysql phpmyadmin

    をDocker Composeを再度実行する。nginxのドキュメントルートにphpinfo()を書いたファイルを置いてアクセスしてみて、正しくxdebugが設定されているかを確認しておく。

    クライアント側の開発環境はマイクロソフトのVisual Studio Code(VS Code)を使っている。あらかじめVS Codeの拡張機能であるPHP Debugをインストールしておく。次にVS Codeのデバッグの構成ファイル(launch.json)を修正する。launch.jsonは以下のように設定した。

    {
      "version": "0.2.0",
      "configurations": [
    
       {
        "name": "Listen for XDebug",
        "type": "php",
        "request": "launch",
        "port": 9002,
        "pathMappings": {
          "/var/www":"${workspaceRoot}/src"
         },
        "ignore": [
          "**/vendor/**/*.php"
        ]
       },
       {
        "name": "Launch currently open script",
        "type": "php",
        "request": "launch",
        "program": "${file}",
        "cwd": "${fileDirname}",
        "port": 9002
       }
      ]
     }

    portは、xdebug.iniのxdebug.remote_portと同じ値にする。以下のように設定するように言っているサイトもあるが、

          "serverSourceRoot": "/var/www",
          "localSourceRoot": "${workspaceRoot}/src"

    serverSourceRoot、localSourceRootとも今後推奨されない設定のようなので、pathMappingsにしておく。pathMappingsの設定は、

    "pathMappings": {
        "リモートディレクトリ":"ローカルディレクトリ" 
        },

    のようにリモートとローカルのパスをマッピングする設定である。ドキュメントをよく読まずにリモートとローカルを反対にしてしまったので動かなくて悩んだ。こちらはnginxのドキュメントルートのディレクトリではないことに注意する。ドキュメントルートディレクトリ外のファイル(例えば、.\src\mycakephp\src\Controller\AppController.php)をデバックしようとしたときに、pathMappingsにルートディレクトリに設定してしまうとソースファイルが見つからないと言ってくる。そこでソースファイルを格納しているディレクトリを設定しておく。

    ignoreの設定をしておかないと、以下のような例外が途中で発生する。どうしてかは不明である。

    例外が発生しました
    
    Aura\Intl\Exception: Package 'default' with locale 'ja-JP' is not registered.

    .\src\mycakephp\webroot\index.php とかに適当にブレークポイントを設定して、Listen for XDebug”の構成でデバッグを行う。ブレークポイントを設定したところで止まるかとチェックする。後はステップオーバーでプログラムが進むか、ステップインで別のソースを参照できるか、または変数の中身を参照できるかをチェックして完了。

    以上でLaradock+CakePHP3+XdebugでVS Codeを使って快適にデバッグができるようになった。以上、再度開発環境を構築する際に忘れないようにメモを残しておく。

    追記

    同じ設定をMacでやってみたら、niginxコンテナが起動できなかった。原因不明・・

    .\laradock\nginx\sites\default.conf にゴミが入っていたのが原因だった。dockerのログを見たら原因がわかった。

    無事にMacでCakePHP3のトップページを参照できた。ただしデバッグできない。

    Macでもデバッグができるようなった。ただし、xdebug.ini に

    xdebug.remote_host=docker.for.mac.localhost

    を設定すればOKのようだ。情報はこちらのサイトから。

    PHP on Laradock w/ Visual Studio Code(VS Code)でデバッグ環境 (特にon Mac)

    Qiita

    ただし、MacでDockerはとても遅い。ブラウザが表示し終わるのに時間がかかる。こちらは問題になっているようで、将来改善されるのかな?

    追記2

    VS CodeのターミナルからDocker Composeすると、IO Errorが出る。普通にPower Shellで実行するとうまく行く。これは、issuesに上がっているから周知の問題なのかな?

    追記3

    MySQLのコンテナが起動できなかったので、解決策はこちらから

    LaradockでMySQLがどうしても立ち上がらない人あつまれー!

    Qiita

    追記4(2018年9月14日)

    xdebug.remote_hostの設定を変更しておく。

  • Visual Studio Codeでgit pullできない話し

    VS CodeのMarkdownのプレビューが楽ちんだしまともだったのでPHPの開発環境を移してみる。今まで、EclipseとかNetBeansとか使っていたけど、VS Codeのほうが軽くてよろしい。

    デバッグは、今までXdebug の設定はNetBeansのときにしていたので、サーバー側は何も変更せずにPHPのデバッグのExtensionをインストールすればできた。デバッグをどうやって始めればわからなかったけど、ブラウザでデバッグしたいページにアクセスすればよかったのね。こちらは解決。あとはリモートのサーバーでデバッグをできるかどうか。

    しかし、Gitで問題が発生。ロカールのレポジトリのコミットとかはうまく行くけど、Bitbucketとかのリモートレポジトリへの認証でエラーになる。おそらくプライベートキーの設置がうまくいっていない。プライベートキーをホームディレクトリの.sshに置いたり、Pagentに設定していても、

    Permission denied (publickey).
    fatal: Could not read from remote repository.

    となるのでした。やはり、GitだけはVS Codeでするのはやめて、別でやろうかな。

    あとVS Codeで気になるのは、保存しないと構文チェックをやってくれないこと。これは何か設定が悪いのかな?

    Embedded Link

    Visual Studio Code

    View this post on Google+

  • CakeEmailでメール本文が文字化けした話し

    とっても悩んで解決したのでメモを残しておく。

    CakePHPのCakeEmailを初めて使ってみたら、送信したメールの本文が文字化けする。今までQdmailを使っていたので、そんな現象には合わなかった。

    Googleさんに聞いてみると

    なんて書いてあるけど、charsetにISO-2022-JPを設定しても現象は変わらない。今度はメールヘッダがも文字化けする。

    しかたないので、CakeEmailをNetBeansのデバッガで追ってみる。CakeEmailの_encodeString()メソッド辺りに見当をつけてブレークポイントを設定する。デバッグしてみると何とmb_convert_encoding()を処理する前にreturnしていた。

    原因はmb_convert_encoding()関数が存在しないことだった。つまり、mbstringモジュールをインストールしていないことが、そもそもの原因である。

    php.iniにmbstringモジュールを読み込んであげて、mbstringモジュールの設定を適当にしてphpinfo()でmbstringがサポートされていることを確認する。

    今度は文字化けせずにメールを送れた。

    WindowsのローカルPCに開発環境に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調べ)
  • PHP 5.6 にアップデートする

    ここのサーバーにインストールされているPHPを5.6にアップデートする。今さら遅いくらいですが。本当なら7にアップデートすればいいのですが・・・。

    remiのレポジトリを変更すれば簡単にできました。詳しくはこちらのサイトを参照のこと。この通りにやりました。

  • WordPressの固定ページの中に投稿最新一覧を表示させた話し

    お客さんのWordPressサイトでカテゴリごとに投稿の最新一覧を表示している固定ページがあります。いい加減手作業で更新するのも面倒になってきましたので、プログラムで対応します。

    Googleさんに聞いてみるとショートコードを登録して呼び出すようなことをみなさん書いています。何と皆さん出しているPHPのコードはすべて同じです。所謂コピペ記事です。何か気持ち悪い状態になっています。さて、誰がオリジナルなんでしょうか?

    しかしながら、WordPressって固定ページ内にPHPのプログラムを書けないのでしたね。今ごろ気が付きました。

    そのコードをコピペしてもいいのですが、2つのカテゴリの記事一覧を表示したいので、2つコピペしなければいけませんし、第一コピペコピペで気持ち悪いです。パラメーターを渡して切り替えなんて改造すればいいのですが、それも面倒ということで、何か別の方法を探します。

    What’s New Generator というよさげなプラグインが見つかりました。早速インストールして試してみます。しかし、カテゴリのフィルターが1つで固定されてしまうので、2つのカテゴリの最新一覧を並べることができません。惜しいですが、これではありません。

    次に当たったのは、Shortcodes Ultimateです。基本的にショートコードでWordPressのいろいろな部分にアクセスできるのですが、今回は投稿のカテゴリ別にタイトルだけを最新3件の記事を一覧に表示します。

    具体的には、

    [su_posts template="templates/teaser-loop.php" posts_per_page="3" tax_term="8"]

    なんて書いてしまいます。出力されるタイトルがHTMLのコードのh2タグで吐き出してしまいますので、この辺りは本当なら修正しないといけないのでしょう。CSSで指定してデザインを合わせて作業完了です。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/04/30 10:35時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

  • baserCMS で管理者ページにログインできないときの対応メモを書いてみた話し

    今のお客さんのIRサイトをリニューアルをしたいという案件で、以前テストで作成したbaserCMSのテストサイトを復活させます。テストサイトはvagrant+VirtualBoxでローカルのPCに作成しています。

    久しぶりにvagrant upでサーバーを起動してきます。Vagrantで起動したらberkshelfでのmysqlのChefのクックブックの仕様が変わって動かないというトラブルがありましたが、これは自分でレシピを作って対応します。後はMySQLのバックアップを投入すれば、今まで作成したサイトにはアクセスできます。しかし、baserCMSの管理者ページにはログインできません。

    ここでNetBeansのデバッガを使ってログインの処理を追っていきます。ログインが成功した後のリダイレクトの処理以降がうまくいっていないようです。管理者ページのトップにリダイレクトしようとして、どういう訳か遷移しません。

    調べてみるとCakePHPのエラーログを見ろとあります。ログには

    2015-08-18 11:16:43 Warning: Warning (2): Unknown: Failed to write session data
    (files). Please verify that the current setting of session.save_path is correct
    (/vagrant/app/tmp/sessions) in [Unknown, line 0]

    なんて書かれています。セッションデータをうまく書き込まれていないようです。

    Googleさんにセッションデータがなぜ書き込めないかを聞いてみると、Vagrantの同期フォルダの権限の設定が間違っているとのこと。こちらのページのsynced_folderの設定を行うとうまく行きました。オーナーとグループをapacheにすればよさそうです。

    baserCMSのGitHubにVagarantFileのサンプルがありますが、こちらのsynced_folderの設定のままだと、私のところではうまくセッションの書き込みができませんでした。今までうまくいっていましたがどうしてなのだろうか?

    以上、2日位悩んだ結果のメモです。まずはCakePHPで何かあったらログを読めということでしょうか。いつも基本を忘れます。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/04/30 10:35時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。