PHP」タグアーカイブ

【PHP】Android上でPHPスクリプトの実行に手間取った話。

開発中のアンドロイドアプリにてサーバにアクセスし、phpスクリプトを実行して結果を表示する機能を実装しようと試みました。

スクリプト内では外部コマンドを実行する関数(shell_exec)を使ってpythonのスクリプトを動かしています。このphp、ターミナル上では問題なく実行できるのですが、アンドロイドでは上手く行かず端末の画面は真っ白のままです。

原因を探るためにshell_execの部分に「2>&1」オプションを追加しました。

echo shell_exec( 'python ファイル名.py 2>&1' );

コマンド実行時にエラーが発生した際、通常はnullが返ってくるのですが「2>&1」オプションをつけるとエラーメッセージが返ってきます。

オプション追加後アンドロイドから実行すると画面には「ImportError: No module named xxx」と表示されるようになりました。どうやらモジュールのインポートに失敗しているようです。

恐らくですが、アンドロイド端末からの実行の際にはPYTHONPATHの設定が適用されないのだと思います。

そこでpythonスクリプトに以下の文を追加しました。

import sys
sys.path.append("/xxx/xxx")

/xxx/xxxにはエラーメッセージ中に書かれていたモジュールが格納されているディレクトリの絶対パスが入ります。これを記述することでライブラリを読み込むディレクトリのパスをpythonスクリプト内から指定できます。

これでようやくアンドロイドアプリでphpスクリプトの実行ができるようになりました。