CMS構築を目的にPHPをベースとしたWordPress、CakePHPやPEARなどオープンソースを中心に解説しています

レンタルサーバの「エックスサーバー(XSERVER)」でSSH接続し、FuelPHPのoilコマンドを実行する方法です。

ある日、エックスサーバー上でFuelPHPをベースとしたWebアプリを構築しようと思い、oilコマンドでmigrateを実行しようとしたらうまくいかずエラーになってしまいました。
その際に調べた解決方法をメモとして残しておきます。

エックスサーバーでoilコマンドを実行してエラー

まずは、Windowsからputtyを使ってエックスサーバーに接続し、phpコマンドを実行してみました。phpコマンドのパスは、オフィシャルのリファレンスより「/usr/bin/php5.6」とのこと。
プログラム言語・コマンドパス | レンタルサーバー【エックスサーバー】

$ /usr/bin/php5.6 -v
PHP 5.6.22 (cgi-fcgi) (built: Jun 22 2016 03:15:28)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

問題なく動作しているようです。

では、oilコマンドを実行したいので、FuelPHPが設置してあるディレクトリに移動します。
動作確認のため、ロボットと名付けられたサンプルタスクを実行してみます。

$ /usr/bin/php5.6 oil refine robots
X-Powered-By: PHP/5.6.22
Content-type: text/html; charset=UTF-8

The use of oil is not supported when running php-cgi. Oil needs php-cli to function!

するとエラーになってしまいました。
メッセージでは「oilコマンドはCGI版ではなく、CLI版で実行してください!」ということを言っています。
PHPにはWebサーバ経由で実行するCGI版と、コマンドラインで実行するCLI版があるのですが、そのことを指しているようです。

CLI版のPHPで実行して問題解決

エックスサーバー上でCLI版のPHPを実行できるのか調べていたら、パスを見つけました。
CLI版のコマンドは「/opt/php-5.6.22/bin/」に設置されていたので、こちらを利用して再実行してみます。

]$ /opt/php-5.6.22/bin/php oil refine robots

                                        "KILL ALL HUMANS!"
                                  _____     /
                                 /_____\
                            ____[\*---*/]____
                           /\ #\ \_____/ /# /\
                          /  \# \_.---._/ #/  \
                         /   /|\  |   |  /|\   \
                        /___/ | | |   | | | \___\
                        |  |  | | |---| | |  |  |
                        |__|  \_| |_#_| |_/  |__|
                        //\\  <\ _//^\\_ />  //\\
                        \||/  |\//// \\\\/|  \||/
                              |   |   |   |
                              |---|   |---|
                              |---|   |---|
                              |   |   |   |
                              |___|   |___|
                              /   \   /   \
                             |_____| |_____|
                             |HHHHH| |HHHHH|

同様にしてCLI版を使い、無事にmigrateも実行できました。

職業柄、コマンドラインからPHPを実行する機会も少ないので、今回は勉強になりました。
oilコマンドを実行するたびに悩みそうなので、ここに書き留めておきます。

このエントリーをはてなブックマークに追加

Monthly Archives

Search