WordPressの稼働環境を別サーバに移したときなどに、データベース内にある wp_posts や wp_options などの文字列をいい具合に一発置換してくれる @wokamoto さんの「replace-siteurl.php」。このたび、hetemlでこのスクリプトを実行しようとしてちょっとハマったので、ノウハウのシェアがてら記事を公開することにしました。
当該スクリプトをhetemlのサーバにアップして、マニュアルにそって黒い画面で実行しようとしますと……
-bash-3.00$ php replace-siteurl.php http://www.example.com/ /path/to/wordpress/ PHP Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /path/to/wordpress/replace-siteurl.php on line 50 Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /path/to/wordpress/replace-siteurl.php on line 50
というエラーが返ってきました。
なんでこんなことが起きるかというと、hetemlの黒い画面でPHPを実行する場合 replace-siteurl.php のようなPHP5向けスクリプトは
-bash-3.00$ php replace-siteurl.php http://www.example.com/ /path/to/wordpress/
でなく
-bash-3.00$ php5 replace-siteurl.php http://www.example.com/ /path/to/wordpress/
とPHP5を明示的に呼び出さないといけないからなんですね。その証拠に、黒い画面でPHPのパスを調べると
-bash-3.00$ ls -l /usr/bin/ | grep php lrwxrwxrwx 1 root root 27 May 30 2011 php -> /usr/local/php4_cli/bin/php lrwxrwxrwx 1 root root 27 May 30 2011 php5 -> /usr/local/php5_cli/bin/php lrwxrwxrwx 1 root root 29 Jun 7 2011 php5.3 -> /usr/local/php5.3_cli/bin/php lrwxrwxrwx 1 root root 29 Feb 6 13:53 php5.4 -> /usr/local/php5.4_cli/bin/php
と、単に php と叩いた場合PHP4を呼びにいくようになってしまっているのです。
hetemlのマニュアルには、PHPスクリプトをPHP5で動かす方法として
- スクリプトの拡張子を変える
- .htaccessにAddHandlerを追記する
などが書かれていますが、黒い画面環境での実行にまで言及してなかったのでちょっとハマったのでありました。
コメントを残す