Your 3D

レンタルサーバーでPHPからPythonを呼び出す

Xサーバーにて、PHPからPythonファイルを呼び出す方法をまとめます。実装したのはXサーバーですが、他のレンタルサーバーでも同様にできるはずです。

Webアプリ作成のための備忘録です。

 

結論から。

 

 

cgi-binフォルダ(test.phpと同階層) > test.pyを入れる

サーバー内public_htmlフォルダ内に入れた場合は、http://ドメイン名/test.phpにアクセス。サブドメインの場合はhttp://サブドメイン名.ドメイン名/test.php。

 

 

スポンサーリンク

コード解説(test.php)

.pyファイルをPythonで動かすためのコマンド。

Pythonコマンドパスの部分は、各レンタルサーバーの公式HPにて確認できる。自分の利用しているレンタルサーバーのコマンドパスを入力してください。

Xサーバーのコマンドパス一覧

プログラム言語・コマンドパス | レンタルサーバーならエックスサーバー
レンタルサーバー「エックスサーバー」のご利用マニュアル|エックスサーバーで動作可能なプログラム言語やそのバージョン、コマンドパスについて記載しています。

 

 

指定されたコマンドを実行する。コマンドの書き方はコンソールに書き込むのと同じ。注意点として、コンソール内でPythonを実行する際は、「Python test.py」等で動かせるが、レンタルサーバー内でPythonを動かすためには、「Python」の部分にフルパスを指定する。

exec()の詳しい解説

PHP: exec - Manual
PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.

 

 

変数に関する情報をダンプ(表示)する。

var_dump()の詳しい解説

PHP: var_dump - Manual
PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.

 

 

スポンサーリンク

動かすまでにしたこと

とりあえず記事上部のコードをコピペして動かしてみてください。ダメだったら以下のポイント確認すべし。

 

Pythonファイルのパーミッション(アクセス権限)を705か755に設定

アクセス権限がないとPythonファイルを動かせない場合があるみたい。

FTPクライアントソフト等を使用し、サーバー内にてPythonファイルの「属性」を変更する。

※FFFTPの場合

1. Pythonファイルを右クリック

2. 属性の変更

3. 属性 705 or 755になるように設定。

 

test.phpがある階層に「cgi-bin」フォルダを作成しtest.pyを入れる

 

コマンドパスをフルパスで書く

コンソール上では「python ファイル.py」のようにかくところを、「python」部をフルパスで書く。コマンドパスは各レンタルサーバーHPを確認すればあるはず。

参考までに、有名どころのサーバーのコマンドパス。調べてみたらほぼ

/usr/local/bin/python

こう書けばいいみたい。

 

 

スポンサーリンク

PHPからPythonを呼び出す際に学んだこと【メモ】

・今回使ったのは、PHPから.pyファイルを呼び出して使う方法。このほかに拡張子を.py → .cgi に変更し、Pythonファイル自身を直接実行する方法もある。ただし、.cgiファイルは、重いライブラリ(opencv等)を読み込むと、500エラーが生じる可能性がある。今回の方法の方がこのエラーを回避しやすいっぽい。

・.cgiファイルを実行する際は、コード先頭に「!/user/local/bin/python」のように宣言する必要がある。記事内で解説しているコマンドのフルパスと似ているが違うから注意。.cgiファイルはPerlで書く必要があるからとのこと。

・PHPからの呼び出しする.pyファイルに「!/user/local/bin/python3.6」のように書くのは間違い。ここで躓いた。違いを理解すれば簡単。

 

参考サイト(シンプルだけど全部つまってる。ありがとうございます。)

PHPからPythonを実行する方法 – ハックノート

PHPからPythonを実行する方法 | クロジカ
phpファイル ``` ``` pythonファイル ``` # file name: call_from_p

 

これからWebアプリをつくるって方は、ロリポップが安いのでおすすめです。趣味向けのライトプランはドメイン料含め月額300円ほど。

以前使用していましたがFTPソフト等ストレスなく使えます。

ライトプラン 詳細はこちら

 

お役に立てたら幸いです。最後まで読んでいただきありがとうございました。