jikkenjo.netjikkenjo.net適当なことを書くか書かないかわからないメモ帳。メニューコンテンツへスキップ「PHP」カテゴリーアーカイブPHP関連の話題。XREAマイグレーションに伴う自前設置WordPressの障害対応コメントを残すXREAがサーバ老朽化に伴うマイグレーションを行いました。s353サーバに収容されていた当ウェブサイトも今日当たりました。同時にWordpressが動かなくなっていました......。面倒だったので記しておきます。maintenance.移行前のウェブ領域は残されるようです。そのため、VALUE-DOMAIN以外のドメインレンタルサービスを使用していて、DNSレコードのIPアドレス修正が漏れていた場合は上記メッセージが表示され続けます。当ウェブサイト(jikkenjo.net)はVALUE-DOMAIN(eNom)だったので自動切換えでしたが、一部、他社からレンタルしているドメインを修正し忘れていて、本事象に当たりました。他にも、ページが途中までしか表示されない事象が発生しました。吐き出されたHTMLソースを見ると、何の前触れもなくぷっつり切れていました。原因不明だったので下記対処をしましたが、結果として、DBをphpMyAdminでanalyze/optimizeすれば解消しました。詳細は不明ですが、恐らくどこかのレイヤでタイムアウトに引っかかってしまったのではないかと思われます。マイグレーション作業として行われたであろうDB移行が、物理移行(ファイルシステムごとコピー)ではなく論理移行(MySQLのダンプ・リストア)だったため、統計情報が更新されなかったと考えられます。それにしても、初回のanalyzeくらいは実行しておいてほしかった。下記文言を追記してやると、Wordpressの内部エラーが出力されるようになります。私の場合は、「DBサーバとの接続が確立できませんでした」的なメッセージが出ていました。bawPHPの配列で色々と実験してみましたコメントを残す久しぶりにPHPを触ってみると、配列の扱いで「どうだっけ?」となった箇所が幾つかあったので、色々と実験をしてみました。foreachでループカウンタ(っぽいもの)が欲しいときforeachがある言語では、宗教的な理由により可能な限りforeachを使いたいものです。ところが、ループカウンタの出力が要件としてある場合はforを使うしか無い、ように見えますが、foreachでいけます。(ただし、後で触れますが落とし穴があります。value:data0data0data1data2data3data0unsetで要素を削除するとキーごと削除される配列から要素を削除する場合はunsetを使用します。すると、キーごと削除されてしまうようなのです。上記foreachを使用する場合は気をつけておかなければ足元を掬われそうです。forのcount($as)で3が取得されるため、id:2までしかループしないうえ、UndefinedのNoticeが出てしまいます。:キーを削除しない(イメージとしては、削除された要素分、キーを詰めて再設定?)ようにするためには下記の方法を使えば良いようです。"data0"}今回はあくまで実験だったため以上の書き方としましたが、キーに意味がある要件の場合は、そもそもデータ構造を見なおしたほうが良さそうです。bawXREA+(PLUS)/CORESERVERでWordPressのWPTouchプラグインを使用した時に出るエラーの回避方法コメントを残すXREA+(PLUS)/CORESERVERでWordPressのWPTouchプラグインを使用した時に出るエラー(ワーニング)メッセージの回避方法をメモしておきます。Changeをしたとき、画面上部に下記ワーニングメッセージが出力される場合があります。中身を読んでみると、ディレクトリにアクセスできなくて怒られていることがわかります。51まずは、wp-contentsの権限を確認してください。777等で設定されている、かつ、wp-content/wptouch-dataが作成されている場合は問題ありません。当該ディレクトリ内に複数のディレクトリが作成されていることも併せて確認します。wp-contentが755で設定されている場合は、wp-content/wptouch-dataを手で作成して、777を与えてください。ここで、再度wordpressのコントロールパネルからWPTouchの設定画面を呼び出します。すると、先ほど手で作成したwp-content/wptouch-data配下に複数のディレクトリが作成されます。ところが、これらのディレクトリは、所有者がapacheになっています。これは、XREA系列サーバでは回避しようがないようです。モジュール版PHPから作成されたファイルの所有者は「apache」になります。これらのファイルの所有者を「*****」に、パーミッションを「707」に変更します。(XREAコントロールパネルより引用)その場合は、下記ワーニングメッセージが出力されます。スクリプトと所有者の違うディレクトリが読めないと言っています。51この事象はXREAのコントロールパネルより、フォルダの所有者を変更することで解決することができます。コントロールパネルから「ツール」を選択し「ファイル所有者の変更」します。bawphpでtwitterbotを作ってみる(作成)2件の返信phpでtwitterbotを作ってみたい(準備)の続きです。環境構築まではできたはずなので、実際に作成してみましょう。bawphpでtwitterbotを作ってみたい(準備)2件の返信ネタを思いついたのでtwitterのbotを作ってみることにしました。ネタがネタだけに、他の誰かに実装されてそうで怖いのですが。環境構築の方法を簡単にまとめておきます。身内でマニュアルのようなものを作成する手段としてDokuWikiを選択してみたので、そのインストール手順のメモです。baw現在のディレクトリを絶対パスで取得コメントを残すこの前、PHPのなんだかんだで必要になったので書いた。baw指定ディレクトリ内のファイルをランダムに取得コメントを残すトップ画像を、アクセス毎でランダムに変更したい場合などが良くある。その機能を実装したかったので、組んでみた。