AWSの開発環境 cloud9を使用しています。
PHPからPythonを実行したいのですが、
Pythonだけを実行すると成功するのですが、PHPから実行するとPythonのコードでエラーがあります と出てしまいます。
■PHP側 sample.php
<?php /************************** pythonを呼び出して結果を受け取る ***************************/ $command="python test.py"; exec($command,$output); var_dump($output[0]);
■Python側 test.py (API連携を実装)
import base64 import datetime, base64, requests, json import pprint from Crypto.Hash import CMAC from Crypto.Cipher import AES sk = '****' sk_bytes = base64.b64decode(sk) secret_key_hex = sk_bytes[1:17].hex() print(secret_key_hex) sesame_id = '****' api_key = '****' cmd = 88 #Open history = 'test5' base64_history = base64.b64encode(bytes(history, 'utf-8')).decode() print(base64_history) headers = {'x-api-key': api_key} cmac = CMAC.new(bytes.fromhex(secret_key_hex), ciphermod=AES) ts = int(datetime.datetime.now().timestamp()) message = ts.to_bytes(4, byteorder='little') message = message.hex()[2:8] cmac = CMAC.new(bytes.fromhex(secret_key_hex), ciphermod=AES) cmac.update(bytes.fromhex(message)) sign = cmac.hexdigest() url = f'https://app.candyhouse.co/api/sesame2/{sesame_id}/cmd' body = { 'cmd': cmd, 'history': base64_history, 'sign': sign } res = requests.post(url, json.dumps(body), headers=headers) status_code = res.status_code print(res.status_code, res.text)
※Pythonファイルだけを実行した時。
$ python test.py
結果:きちんとprintされている値がプリントされています。
コードが出力 dGVzdDU= 404 <Response [200]>
※PHPファイルを実行
$ php sample.php
結果:Pythonファイルの方でエラーが返ってきます。
File "test.py", line 34 url = f'https://app.candyhouse.co/api/sesame2/{sesame_id}/cmd' ^ SyntaxError: invalid syntax
このURLの記載方法を
url = 'https://app.candyhouse.co/api/sesame2/' + sesame_id + '/cmd'
にするとこのエラーは消えますが別に
Traceback (most recent call last): File "test.py", line 2, in <module> import datetime, base64, requests, json File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 58, in <module> from . import utils File "/usr/lib/python2.7/site-packages/requests/utils.py", line 32, in <module> from .exceptions import InvalidURL File "/usr/lib/python2.7/site-packages/requests/exceptions.py", line 10, in <module> from .packages.urllib3.exceptions import HTTPError as BaseHTTPError File "/usr/lib/python2.7/site-packages/requests/packages/__init__.py", line 95, in load_module raise ImportError("No module named '%s'" % (name,)) ImportError: No module named 'requests.packages.urllib3'
のようなモジュールの読込エラーが出てしまいます。
PHPからの呼び出し方法が悪いのだと思いますが、
アドバイスいただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/06 03:05