WordPress ME 2.2からWordPress 2.5へアップグレードしました。
アップグレードは、次のような流れで実施しました。
- DBデータとファイル一式バックアップ
- ローカル環境に本サイトのDBデータとファイル一式を使用した環境を構築
- ローカル環境でアップグレードのチェック
- 本サイトに新しいDBを作成し、ローカル環境でチェックしたDBデータをインポート
- 本サイトのファイルをローカル環境でチェックしたものと入れ替える
ローカル環境と本サイト間で、mysqlデータのインポート/エクスポートするときは、ダンプしたsqlファイル内のURLやファイルパスを置換しました。
だいたいうまくいったようでしたが、本サイトの管理画面のダッシュボードにアクセスすると、何も表示されない状態でした。
PHPのエラーを表示するため、wp-adminディレクトリの.htaccessにphp_flag display_errors "On"を記述して、ダッシュボードにアクセスすると、次のようなエラーが表示されました。
Fatal error: Cannot use string offset as an array in [略]wp-admin/includes/dashboard.php
WordPress › Support » 2.5 - Fatal Error: Cannot use string offset as an array, line 46 dashboard.phpを参考に、DBのデータを削除しました。
-
SELECT * FROM wp_options WHERE option_name='dashboard_widget_options';
"dashboard_widget_options"に対応する行が1行しかないことを確認して、その行を削除。
-
DELETE FROM wp_options WHERE option_name='dashboard_widget_options';
これでダッシュボードは表示されました。
その他もいまのところ問題ないようです。
PHP4.4.8をソースからインストールしたときのエラーとその回避方法です。
make installしたところ、次のようなエラー(抜粋)がでました。
chmod: cannot access `/usr/local/apache2/modules/libphp4.so'
php4 apxs:Error: Command failed with rc=65536
make: *** [install-sapi] エラー 1
最初、.conigureを次のようにしていました。
./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/mysql \
--with-config-file-path=/etc/php \
--enable-mbstring \
--with-zlib \
--with-gd \
--with-libmbfl \
--enable-pcntl \
--with-openssl \
--with-jpeg-dir=/usr/local/lib \
--with-png-dir=/usr/lib \
--with-dom \
--enable-exif \
--enable-mbregex \
--without-pear \
--enable-gd-native-ttf \
--with-freetype-dir=/usr/lib/ \
--with-gmp \
--enable-bcmath \
--enable-ftp
下記、参考リンクのページを参考に、.configureに--prefix=/usr/local/phpを指定しました。
すると、make installでエラーはでず、インストールできました。
いろいろ試したので、--prefixの指定でエラー回避となったのかどうかは、不明です。
./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/mysql \
--with-config-file-path=/etc/php \
--enable-mbstring \
--with-zlib \
--with-gd \
--with-libmbfl \
--enable-pcntl \
--with-openssl \
--with-jpeg-dir=/usr/local/lib \
--with-png-dir=/usr/lib \
--with-dom \
--enable-exif \
--enable-mbregex \
--without-pear \
--enable-gd-native-ttf \
--with-freetype-dir=/usr/lib/ \
--with-gmp \
--enable-bcmath \
--enable-ftp
インストール環境は、VMWareのCentOS4.4です。
PHPやapacheをパッケージとしてインストールしていませんでした。
参考リンク
PHPを使うWebアプリケーション開発用にインストールしたEmacs Lispメモです。
- PHP mode for Emacs
- HTML helper mode beta
- javascript.el
- A CSS editing mode for Emacs
- EmacsWiki: Smarty Mode
elファイルは、/usr/local/share/emacs/22.1/site-lispに置きました。
php-mode
ダウンロード:SourceForge.net: PHP mode for Emacs
バージョン:1.4.0
1.4.0は、Emacs バージョン22.1がサポート対象のようです(SourceForge.net: PHP mode 1.4.0 released)。
.emacs設定
php-mode1.2.0では、タブ幅の設定などは、php-mode-user-hookで動作していました。
php-mode1.4.0は、php-mode-hookで動作するようです。
(add-hook 'php-mode-hook 'turn-on-font-lock)
(autoload 'php-mode "php-mode" "PHP mode" t)
(defcustom php-file-patterns (list "\\.php[s34]?\\'" "\\.phtml\\'" "\\.inc\\'")
"*List of file patterns for which to automatically invoke php-mode."
:type '(repeat (regexp :tag "Pattern"))
:group 'php)
(let ((php-file-patterns-temp php-file-patterns))
(while php-file-patterns-temp
(add-to-list 'auto-mode-alist
(cons (car php-file-patterns-temp) 'php-mode))
(setq php-file-patterns-temp (cdr php-file-patterns-temp))))
(add-hook 'php-mode-hook '(lambda ()
(setq c-basic-offset 2)
(setq c-tab-width 2)
(setq c-argdecl-indent 0)
(setq c-auto-newline nil)
(setq c-continued-statement-offset 0)
(setq c-indent-level 2)
(setq c-label-offset -2)
(setq c-tab-always-indent t)
(setq indent-tabs-mode t)
(setq tab-width 2)
(setq-default tab-width 2)
) t)
参考リンク
html-helper-mode
.emacs設定
(autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t)
(setq auto-mode-alist (cons '("\\.\\(html\\|htm\\|tpl\\|ctp\\)$" . html-helper-mode) auto-mode-alist))
(add-hook 'html-helper-mode-hook '(lambda ()
(setq c-basic-offset 2)
(setq c-tab-width 2)
(setq c-argdecl-indent 0)
(setq c-auto-newline nil)
(setq c-continued-statement-offset 0)
(setq c-indent-level 2)
(setq c-label-offset -2)
(setq c-tab-always-indent t)
(setq indent-tabs-mode t)
(setq tab-width 2)
(setq-default tab-width 2)
) t)
参考リンク
javascript-mode
javascript.elは、javascript.el - Yet Another Hackadelicの記事でダウンロード先が紹介されています。
.emacs設定
(add-to-list 'auto-mode-alist (cons "\\.\\(js\\|as\\|json\\|jsn\\)\\'" 'javascript-mode))
(autoload 'javascript-mode "javascript" nil t)
(setq js-indent-level 2)
css-mode
ダウンロード:A CSS editing mode for Emacs
バージョン:0.10
.emacs設定
(autoload 'css-mode "css-mode" "CSS mode" t)
(setq auto-mode-alist
(cons '("\\.css\\'" . css-mode) auto-mode-alist))
(setq cssm-indent-function #'cssm-c-style-indenter)
smarty-mode
ダウンロード:EmacsWiki: Smarty Mode
.emacs設定
(add-to-list 'auto-mode-alist (cons "\\.tpl\\'" 'smarty-mode))
(autoload 'smarty-mode "smarty-mode" "Smarty Mode" t)
関連投稿
Emacs 21.3から22.1への入れ替えメモです。
VMware上のCentOS4.4にインストールしました。
nXhtml - an Emacs mode for XHTMLを使用したかったのが入れ替えの動機です。
(nXhtmlは、試してみましたが、カラーの設定がうまくいかず、とりあえず使用しないことに・・・。)
rpmパッケージの削除
最初にEmacs21.3のrpmパッケージを削除しました。
# rpm -qa | grep emacs
# rpm -e emacs-leim-21.3-19.EL.4 emacs-21.3-19.EL.4 emacs-common-21.3-19.EL.4
emacs-commonやemacs-leimは何かは知りませんが、気にせず削除しました。
Emacs 22.1のダウンロード
GNU Emacs - GNU Project - Free Software Foundation (FSF)
emacs-22.1.tar.gzをダウンロード。
インストール
# tar xvzf emacs-22.1.tar.gz
# cd emacs-22.1
# ./configure
# make
# make install
Emacsセッションの保存
22.1にしたところ、Emacsを終了しただけで、Emacsセッションの保存ができなくなりました。
M-x desktop-saveするとセッションの保存ができるのですが。
21.3は、次を.emacsに記述するだけで動作していました。
(desktop-load-default)
(desktop-read)
そこで、次のような記述に変更したところ、セッションの保存ができました。
(require 'desktop)
(setq desktop-enable t)
(desktop-load-default)
(desktop-read)
ただ、Emacsバージョン22.1の場合、Saving Emacs Sessions - GNU Emacs Manualにあるように、
(desktop-save-mode 1)
を記述するだけでよいみたいです。
WindowsクライアントからLinuxサーバーのPHPウェブページをリモートデバッグする設定のメモです。
Windows(XP SP2)には、EclipseのPHP開発用プラグイン「PDT」をインストールします。
「PDT」は、Xdebugクライアントになります。
Xdebugは、Xdebugインストールメモのようにインストール済みです。
PDTインストール
PDTは、PDT Projectから「PDT All-in-One」パッケージをダウンロードしました。
(ダウンロードしたファイルは、pdt-all-in-one-S20071213_M1-win32.zipです。)
インストールは、zipファイルを適当なフォルダに解凍するだけでOKのようです。
(JVM(Java virtual machine)は必要)
サーバーの設定
デバッグするファイルは、次のようなパスにあるものとします。
| ドキュメントルート | /var/www/html |
|---|---|
| デバッグ対象ファイル | /var/www/html/rd/index.php |
| デバッグ対象URL | http://test.localdomain/rd/index.php |
/var/www/html/rd/index.phpは、次のようなものにします。
.htaccessにXdebugの設定
ドキュメントルートの.htaccessには、次のような設定を行います。
php_flag xdebug.remote_enable On
php_value xdebug.remote_handler dbgp
php_value xdebug.remote_host 192.168.0.XX
この例では、xdebug.remote_hostには、WindowsクライアントのIPを指定しています。
PDTプロジェクト作成
eclipse.exeを起動します。
初めてeclipseを起動するときには、Workspaceの作成を聞かれると思います。
プロジェクトの新規作成
1.メニューの[File]->[New]->[Project]をクリック。
2.[PHP Project]を選択して、[Next]ボタンをクリック。
3.Project Nameを適当に入力して、[Finish]ボタンをクリック。
この例では、[Use efault]のチェックを外して、「H:\test」を指定しています。
![]()
4.サーバーのファイルをWindowsクライアントにコピー。
サーバーのファイルとローカルファイルは、次のような対応にしました。
| サーバーのファイルパス | /var/www/html/rd/index.php |
|---|---|
| ローカルのファイルパス | H:\DocumentRoot\rd\index.php |
5.ローカルファイルをプロジェクトに追加。
プロジェクト名を右クリックして表示されるメニューの[Import]をクリックして、ローカルのファイルをインポートします。
![]()
![]()
[Finish]ボタンをクリックして完了。
PDT デバッグ設定
1.
メニューの[Run]->[Open Run Debug...]をクリックします。
2.
[PHP Web Page]をダブルクリックして、デバッグ設定を作成します。
主な設定は、次のようになります。
| Server Debugger | Xdebug |
|---|---|
| PHP Server | サーバー一覧が表示されていない場合は、[New]ボタンをクリックして作成します。 デバッグ対象があるサーバー名を指定します。 |
| File | プロジェクトに追加したファイルを指定します。 |
| URL | デバッグ対象のURLを指定します。 |
3.
[Apply]ボタンをクリックして、設定を保存します。
PDT デバッグ実行
メニューの[Run]->[Debug]をクリックします。
デフォルトでは、ブレークポイントを設定しなくても、PHPスクリプトの先頭でデバッガが処理を停止します。
次のキャプチャは、[F5]キーを押しながら関数の中まで入ったところです。
その他
Windows(XP SP2)には、COMODO Firewallをインストールしています。
最初、ファイアーウォール(COMODO Firewall)にブロックされて、PDTでデバッグできるまで少し手間取りました。
COMODO FirewallのApplication Control Rulesで、次の設定を行いました。
- IEXPLORE.EXEの設定で、親がeclipse.exeの場合、MiscellaneousのAllow invisible connection attemptsにチェックを入れる。
(一度、すべてのIEXPLORE.EXEの設定の設定を削除後、[Run]->[Debug]すると、COMODO Firewallが許可するかどうか聞いてくるかも。)
eclipseはとても重いというイメージがありましたので、軽快に動作するのが意外でした。
僕はemacsで作業することが多いですが、PDTでのデバッグをときどき利用したいと思います。