CentOS7 + PHP 7.2 + pyenv + Python3.6 + Apache 2.4 で質問です。この環境でも、Apache上からPython3.6を動かす方法を教えてください。現状ApacheよりPHPのexec命令を経由してPythonを動かした場合、CentOS7付属のPython2.7が動作してしまい、エラーになってしまいました。

なお、シェル上から直接Pythonを動かした場合は 3.6 として動作しています。
また、Apacheを起動した時点でログに「Apache/2.4.6 (CentOS) mod_wsgi/3.4 Python/2.7.5 PHP/7.2.1 configured」と記録されているので、恐らくApacheの設定を何とかすればよいのではないかと考えていますが、良くわからず困っています。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2018/01/18 22:20:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント100pt

環境変数の違いだと思います。

  • PATH
  • LD_LIBRARY_PATH
  • PYTHONHOME
  • PYTHONPATH

というような辺り。

Apache の定義でやるなら、mod_env モジュールでやります。
php から python を起動しているようなので、php から env コマンドを実行した結果と、ログインシェルで env コマンドを実行した結果を見比べて、SetEnv ディレクティブで調整してください。

参考URL
https://httpd.apache.org/docs/current/en/mod/mod_env.html
https://docs.python.org/ja/3.6/using/cmdline.html#environment-variables

id:halohalolin

a-kuma3さん、毎度ありがとうございます!
軽く調べたところ、PATHに差違があったのを確認したので、この辺何とかならないか調整してみます。

2018/01/12 17:43:54
id:a-kuma3

php のマニュアルを見てたら、putenv という関数がありました。
http://php.net/manual/ja/function.putenv.php

python を呼び出すときに php のスクリプトをかませているということなので、その apache が他の用途にも使われているのなら、putenv を使う方が影響する範囲が少ない、というメリットはありそうです。

2018/01/12 18:03:58

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません