質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
さくらのクラウド

さくらのクラウドは、さくらインターネット株式会社が提供するIaaS型のクラウドサービス。仮想化技術による柔軟性のあるカスタマイズを始め、様々な高機能を備えています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1191閲覧

Wordpress上でPHP exec()関数からpython3を実行したい

mit39

総合スコア13

さくらのクラウド

さくらのクラウドは、さくらインターネット株式会社が提供するIaaS型のクラウドサービス。仮想化技術による柔軟性のあるカスタマイズを始め、様々な高機能を備えています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/10/14 07:00

前提・実現したいこと

Wordpress上でpythonコードを走らせたかったため、
phpを介してexec()関数でpythonを呼び出すことを試みています。
Wordpressはレンタルサーバー(さくらサーバー)上にあるため、
pythonコードについては自前のPCで動作確認をして問題ないことを確認しています。

Wordpress上からphpを呼びだすまでは行ったのですが、
pythonが起動しないため困っています。

python3系のプログラムを動かしたかったので、python3.4.3(自前のPCにインストールと同じバージョン)を、サーバーには手動でインストールしています。

発生している問題・エラーメッセージ

php上からpythonが呼び出されません。

該当のソースコード

<?php //unicode入出力をするための魔法の言葉 mb_language('uni'); mb_internal_encoding('UTF-8'); $fullPath = 'python3.4 ./wp-content/uploads/python_code/TEST.py 2>&1'; if(!exec($fullPath, $outpara)){ echo 'Python読み込み失敗'; } $i=0; while($outpara[$i]!=NULL){ echo $outpara[$i]; $i=$i+1; } ?>

--出力結果--
PHP稼動テストpython3.4: not found

試したこと

コマンドをpython3.4 → python に変更するとpython上の文法エラーが
吐き出されるので関数とphpは読み込んでいる様子。(コードが3系、コマンドpythonではサーバーでpython2.7が呼び出されるので文法エラーになります)

Tera Termでphpの所在ディレクトリまで潜りphpを起動した際には
問題なく動作したため、Wordpressの設定前後の問題かと思うのですが、
Wordpressもphpも初心者のため悪いところの検討がついていません。

また同フォルダでpython3.4のコマンドが有効なこともTeraTerm上では確認しています。

少しでもヒントが欲しい状況です。よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

使用サーバー:さくらレンタルサーバー
Python ver. : Python3.4.3
PHP ver.(さくらでの指定):PHP7.2.10(モジュール版)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

exec()で実行する場合はフルパスで指定してあげる必要があります。

bash

1which Python3.4

みたいな感じでフルパスを確認して指定してみて下さい。

投稿2018/10/14 09:32

tanat

総合スコア18709

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mit39

2018/10/14 13:48

ご回答いただきましてありがとうございました。 Python3.4の部分をフルパスで指定したら上手くいきました。 大変助かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問