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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Kali Linux

Kali Linuxは、DebianベースのLinuxディストリビューションです。ペネトレーションテストを主な目的とし、250以上の専用ソフトウェアがインストールされています。

Python 3.x

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

243閲覧

phpから実行できないpythonのプログラムがある。

jaac

総合スコア12

Kali Linux

Kali Linuxは、DebianベースのLinuxディストリビューションです。ペネトレーションテストを主な目的とし、250以上の専用ソフトウェアがインストールされています。

Python 3.x

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/06/26 13:47

phpから同じディレクトリ内のpythonプログラムを実行しようと考えています。
get.php内で、test.pyを呼び出すと$output[0]より"test:one"が取得できますが
同様にmain.pyを呼び出すと、$return_verに"1"が出力され、実行されません。

main.pyでは、プログラム上部に本来実行したい処理を記述したままですが、
質問の通り、実行できないため今はmain関数内での呼び出しを抜いています。

そのため、test.pyもmain.pyも"test:one"を出力されるだけのはずが、test.pyの場合しか実行されません。

[試したこと]
・python3及びディレクトリのフルパスを記述
/usr/bin/python3 /var/www/html/test.py及びmain.py
・get.php及びpythonプログラムにすべての権限を与える

[実行環境]
OS:linux (kali)
実行場所:/var/www/html/test.py (apatch2サーバ用のディレクトリ)

PHP

1#get.php 2 3#実行できる 4$command='python3 test.py'; 5#こっちにすると実行できなくなる 6$command='python3 main.py'; 7 8exec($command,$output,$return_ver);

python

1#test.py 2 3print("test:one")

python

1#main.py 2 3####### 4##本来実行したい処理。テスト中のため、main関数では呼び出していない。 5####### 6 7def main(): 8 print("test:one") 9 10main()

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

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

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

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

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

otn

2022/06/26 14:34

エラーログに何か出てないのでしょうか?
jaac

2022/06/26 14:44

phpのエラーログを確認しましたが、なにも出力されていませんでした。 また、$command='python3 main.py 2> error.log';としても、実行自体されないため、出力は得られませんでした。
otn

2022/06/26 16:48

> phpのエラーログを確認しましたが、 phpのエラーログとは具体的に何のことでしょう? Apacheのエラーログでは無く??
hoshi-takanori

2022/06/27 04:32

「本来実行したい処理」ではライブラリを使ったり、ファイルを読み書きしてますか? (カレントディレクトリ以外に、実行ユーザーや環境変数あたりを確認する必要があるかと…。)
jaac

2022/06/27 13:30

>「本来実行したい処理」ではライブラリを使ったり、ファイルを読み書きしてますか? たくさんしてます。。 実行されない処理で使われている、ライブラリやファイルの書き出しが影響するとは考えもしませんでした。 いろいろと調べて修正してみます。
otn

2022/06/27 14:21

コメントアウトしていないのであれば、その部分でエラーになっているのでは? そうであれば、エラーログにエラーメッセージが出ていると思います。
jaac

2022/06/28 12:13

追加で質問させてください。(別で質問を投稿したほうがよいでしょうか) 元々、この質問での環境として、index.html内の送信ボタンをクリックした際のaction="get.php"により実行を行っていました。試しにphp get.phpを実行したところmain.pyが正常に実行されました。 web画面からの実行(index.html内のget.php呼び出しからのmain.py実行)と直接(get.phpの実行によるmain.py実行)の違いは何でしょうか?
hoshi-takanori

2022/06/28 12:44

上にも書いた通り、すぐ思いつくものとしてはカレントディレクトリの他に、実行ユーザーや環境変数が違う可能性があるかと。実行ユーザーが違えばファイルの読み書きに関する権限が変わりますし、環境変数が違えばライブラリを探す先が変わる可能性があります。 カレントディレクトリや実行ユーザーや環境変数は PHP のものが引き継がれるので、PHP 側で確認すると良いのでは。 https://note.affi-sapo-sv.com/amp/web-user-confirm.php https://webukatu.com/wordpress/blog/29415/#PHP-2
jaac

2022/06/28 13:04

@hoshi-takanori 実行ユーザーがwebから実行するのと直接実行するので異なっているのが原因でした。 apacheのconfigファイルから実行ユーザを変更することで解決しました。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問