レンタルサーバの「エックスサーバー(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コマンドを実行するたびに悩みそうなので、ここに書き留めておきます。
コメントする