質問編集履歴

15

タイトル修正

2020/02/23 08:25

投稿

minamino
minamino

スコア7

test CHANGED
@@ -1 +1 @@
1
- 【初心者】PHPからPythonを実行する際に、実行ユーザーの違いからファイル生成すらできなくなる現象を解消したい
1
+ 【初心者】PHPからPython(でAWS CLI)を実行する際に、実行ユーザーの違いからファイル生成すらできなくなる現象を解消したい
test CHANGED
File without changes

14

冒頭に注意点を追記

2020/02/23 08:25

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,11 @@
1
+ ※初心者がハマっていく過程が長文で書いてありますので、
2
+
3
+ お急ぎの方は下部の自己解決の回答を先にお読みください。
4
+
5
+
6
+
7
+
8
+
1
9
  初心者です。
2
10
 
3
11
  ###参考URL1

13

言葉尻の変更。

2020/02/23 08:14

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -502,7 +502,7 @@
502
502
 
503
503
 
504
504
 
505
- まで来た、のではないかと考えている(しかし引き続き、polly.pyがコマンドラインでは正確に実行され、PHPからのexec実行では動作しない現象は続いている。)
505
+ 、、という箇所まで来た、のではないかと考えている(しかし引き続き、polly.pyがコマンドラインでは正確に実行され、PHPからのexec実行では動作しない現象は続いている。)
506
506
 
507
507
 
508
508
 

12

試したこと4~6を下部に追記。次のステップのアドバイス依頼。

2020/02/23 06:25

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,7 @@
1
1
  初心者です。
2
2
 
3
+ ###参考URL1
4
+
3
5
  phpとpython連携で実行ユーザーの違いではまった件
4
6
 
5
7
  https://tsukarooohi.com/416.html#phppython
@@ -8,6 +10,8 @@
8
10
 
9
11
 
10
12
 
13
+ ###参考URL2
14
+
11
15
  下記のURLも該当するかどうか、只今検証中です。
12
16
 
13
17
  【AWS CLI】PHPのexec();を使うとAWS CLIのcredentialsがnot foundになるときの対処方法
@@ -64,8 +68,6 @@
64
68
 
65
69
 
66
70
 
67
- ### 試した事
68
-
69
71
  ####1:sudo visudoで、分からないなりに、下記の行を全部追記して、apacheを再起動した。NGだった。
70
72
 
71
73
  ```
@@ -148,30 +150,30 @@
148
150
 
149
151
  ※python側のシバンに
150
152
 
153
+ シャープ!/usr/bin/python3.5
154
+
155
+ と書いてあるので、
156
+
157
+ exec("python {$pythonに渡す環境変数(/usr/bin/python3.5/ ?)} /usr/lib/python3.5/フルPATH/polly.py");
158
+
159
+ と書いてもexecの文法が間違っているのか、NG。
160
+
161
+ 冒頭のURL
162
+
163
+ https://tsukarooohi.com/416.html#phppython
164
+
165
+ の方は、.shファイルから環境変数(や実行ユーザー)をpythonに渡して動かしているようなのですが、関連情報を検索したところ.shの文法は未知の言語で記述されていて断念しました。
166
+
167
+
168
+
169
+
170
+
171
+ ###PYTHON側
172
+
173
+ ```
174
+
151
175
  #!/usr/bin/python3.5
152
176
 
153
- と書いてあるので、
154
-
155
- exec("python {$pythonに渡す環境変数(/usr/bin/python3.5/ ?)} /usr/lib/python3.5/フルPATH/polly.py");
156
-
157
- と書いてもexecの文法が間違っているのか、NG。
158
-
159
- 冒頭のURL
160
-
161
- https://tsukarooohi.com/416.html#phppython
162
-
163
- の方は、.shファイルから環境変数(や実行ユーザー)をpythonに渡して動かしているようなのですが、関連情報を検索したところ.shの文法は未知の言語で記述されていて断念しました。
164
-
165
-
166
-
167
-
168
-
169
- ###PYTHON側
170
-
171
- ```
172
-
173
- #!/usr/bin/python3.5
174
-
175
177
  #coding:utf8
176
178
 
177
179
  # -*- coding: utf-8 -*-
@@ -324,4 +326,188 @@
324
326
 
325
327
 
326
328
 
329
+ ### 試した事4
330
+
331
+ ※2/23 14:32追記(試した事):->参考URL2から原因究明を進め、
332
+
333
+ コマンドラインから下記を実行
334
+
335
+ ```polly.py 
336
+
337
+ i3 = 'aws sts get-caller-identity'
338
+
339
+ out = subprocess.check_output(i3, shell=True)
340
+
341
+ print (out)
342
+
343
+
344
+
345
+ file3 = '/var/www/html/t4/hoge.txt'
346
+
347
+ Path(file3).touch()
348
+
349
+
350
+
351
+ with open(file3,'w', encoding='utf8') as f2:
352
+
353
+ print(out, file=f2)
354
+
355
+
356
+
357
+ #結果:b'{'UserId': 'xxxxxxxxxxxx', 'Arn': 'arn:aws:iam::xxxxxxxxxxxx:root', 'Account': 'xxxxxxxxxxxxxx'}
358
+
359
+ ```
360
+
361
+
362
+
363
+ ```polly.php
364
+
365
+ <?php
366
+
367
+ $command="aws sts get-caller-identity --region us-west-1";
368
+
369
+ exec($command,$output);
370
+
371
+ print "$output[0]\n";
372
+
373
+ print_r($output);
374
+
375
+ var_dump ($output);
376
+
377
+
378
+
379
+ $command="python /usr/lib/python3.5/site-packages/polly/polly2.py $keywords $dir $manu $filepath";
380
+
381
+ exec($command,$output);
382
+
383
+ print "$output[1]\n";
384
+
385
+ print_r($output);
386
+
387
+ var_dump ($output);
388
+
389
+ ?>
390
+
391
+ //HTTPの結果:bool(true) array(0) { } int(0)
392
+
393
+ ```
394
+
395
+ と、PHPファイルをブラウザからURL表示して、execで全く同じpythonファイルを実行させたときのエラー(PHP側からは実行ユーザーの表示すらないように見える)
396
+
397
+ ```
398
+
399
+ [Sun Feb 23 14:44:13.128866 2020] [php7:notice] [pid 3206] [client 61.210.204.156:56533] PHP Notice: Undefined offset: 1 in /var/www/html/polly.php on line 353, referer: /polly.php
400
+
401
+ Unable to locate credentials. You can configure credentials by running "aws configure".
402
+
403
+ Unable to locate credentials. You can configure credentials by running "aws configure".
404
+
405
+ Traceback (most recent call last):
406
+
407
+ File "/usr/lib/python3.5/site-packages/polly/polly2.py", line 36, in <module>
408
+
409
+ out = subprocess.check_output(ahoi3, shell=True)
410
+
411
+ File "/usr/lib64/python3.5/subprocess.py", line 316, in check_output
412
+
413
+ **kwargs).stdout
414
+
415
+ File "/usr/lib64/python3.5/subprocess.py", line 398, in run
416
+
417
+ output=stdout, stderr=stderr)
418
+
419
+ subprocess.CalledProcessError: Command 'aws sts get-caller-identity' returned non-zero exit status 255
420
+
421
+ ```
422
+
423
+
424
+
425
+
426
+
427
+ ### 試した事5
428
+
429
+ CENTOS7でservice httpd restartではなくsystemctl restart httpdのため、冒頭の参考URL2の通り試せない。代わりに、
430
+
431
+ vim /etc/sysconfig/httpd
432
+
433
+ から環境変数を確認するも、LANG=Cとだけしか指定されていないので、分からないなりにLANG=JPにしておいた。
434
+
435
+ ※意味なし。依然としてPHP側からのAWS CLI実行は動作せず。
436
+
437
+
438
+
439
+ ### 試した事6
440
+
441
+ AWS Linuxインスタンス上PHPのexec()でコマンドを使いたい
442
+
443
+ https://teratail.com/questions/162256
444
+
445
+ という同様の質問を参考に、
446
+
447
+
448
+
449
+ ```polly.php
450
+
451
+ <?php
452
+
453
+ putenv('AWS_DEFAULT_REGION=' . $region);
454
+
455
+ putenv('AWS_ACCESS_KEY_ID=' . $key);
456
+
457
+ putenv('AWS_SECRET_ACCESS_KEY=' . $secret);
458
+
459
+ $command="aws sts get-caller-identity --region us-west-1";
460
+
461
+ exec($command,$output);
462
+
463
+ print "$output[0]\n";
464
+
465
+ print_r($output);
466
+
467
+ var_dump ($output);
468
+
469
+
470
+
471
+
472
+
473
+ //HTML出力結果
474
+
475
+ Array
476
+
477
+ (
478
+
479
+ [0] => {
480
+
481
+ [1] => "Account": "xxxxxxxxxxxx",
482
+
483
+ [2] => "Arn": "arn:aws:iam::xxxxxxxxxxxx:root",
484
+
485
+ [3] => "UserId": "xxxxxxxxxxxx"
486
+
487
+ [4] => }
488
+
489
+ )
490
+
491
+ ```
492
+
493
+ と、適切な(仮:rootは適切ではないが、コマンドライン実行時と同じ)ユーザーでPHPのHTML出力結果でも表示された。一歩進んだ、ような気がする。
494
+
495
+
496
+
497
+ (参考URL2)の
498
+
499
+ https://note.com/garugarion/n/n42c6f24dc892
500
+
501
+ >要注意なのがコマンドラインで$ printenv を実行するとUSERは適切なログインユーザーになっているところ。このせいで原因究明が遅れます。
502
+
503
+
504
+
505
+ まで来た、のではないかと考えている(しかし引き続き、polly.pyがコマンドラインでは正確に実行され、PHPからのexec実行では動作しない現象は続いている。)
506
+
507
+
508
+
509
+ あと一押し、お知恵を頂けると嬉しいです。
510
+
511
+
512
+
327
513
  何卒宜しくお願い申し上げます。

11

冒頭に、該当しそうなURLを追記

2020/02/23 06:24

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -1,11 +1,23 @@
1
1
  初心者です。
2
2
 
3
+ phpとpython連携で実行ユーザーの違いではまった件
4
+
3
5
  https://tsukarooohi.com/416.html#phppython
4
6
 
5
7
  こちらの方と同様の症状ではまっています。
6
8
 
7
9
 
8
10
 
11
+ 下記のURLも該当するかどうか、只今検証中です。
12
+
13
+ 【AWS CLI】PHPのexec();を使うとAWS CLIのcredentialsがnot foundになるときの対処方法
14
+
15
+ https://note.com/garugarion/n/n42c6f24dc892
16
+
17
+
18
+
19
+
20
+
9
21
  ### 実現したい事:
10
22
 
11
23
  PHPからPythonファイルを実行。Amazon CLIからpollyを使って、公開状態でS3に音声ファイルを生成したい。

10

試した事欄に、※印で、コメントを受けて試した事を2個追記

2020/02/23 04:00

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -134,6 +134,24 @@
134
134
 
135
135
  ```
136
136
 
137
+ ※python側のシバンに
138
+
139
+ #!/usr/bin/python3.5
140
+
141
+ と書いてあるので、
142
+
143
+ exec("python {$pythonに渡す環境変数(/usr/bin/python3.5/ ?)} /usr/lib/python3.5/フルPATH/polly.py");
144
+
145
+ と書いてもexecの文法が間違っているのか、NG。
146
+
147
+ 冒頭のURL
148
+
149
+ https://tsukarooohi.com/416.html#phppython
150
+
151
+ の方は、.shファイルから環境変数(や実行ユーザー)をpythonに渡して動かしているようなのですが、関連情報を検索したところ.shの文法は未知の言語で記述されていて断念しました。
152
+
153
+
154
+
137
155
 
138
156
 
139
157
  ###PYTHON側
@@ -220,6 +238,12 @@
220
238
 
221
239
  ```
222
240
 
241
+ ※aws configure --profile hoge
242
+
243
+ から別のAWSアクセスキーを試してみたのですが、NGでした。
244
+
245
+ AWS関係なく、rootとapacheのユーザーの違いを乗り越える必要があります。
246
+
223
247
 
224
248
 
225
249
  ###エラー

9

bucket name2

2020/02/23 03:42

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -172,7 +172,7 @@
172
172
 
173
173
 
174
174
 
175
- speech = 'aws polly start-speech-synthesis-task --region us-west-1 --endpoint-url "https://polly.us-west-1.amazonaws.com/" --output-format mp3 --output-s3-bucket-name --voice-id Justin --text "'+format(polly)+'"'
175
+ speech = 'aws polly start-speech-synthesis-task --region us-west-1 --endpoint-url "https://polly.us-west-1.amazonaws.com/" --output-format mp3 --output-s3-bucket-name bucket-name --voice-id Justin --text "'+format(polly)+'"'
176
176
 
177
177
 
178
178
 
@@ -196,7 +196,7 @@
196
196
 
197
197
 
198
198
 
199
- publicread = 'aws s3api put-object-acl --bucket txttxt --key '+soundurl+' --acl public-read'
199
+ publicread = 'aws s3api put-object-acl --bucket bucket-name --key '+soundurl+' --acl public-read'
200
200
 
201
201
  out2 = subprocess.call(publicread, shell=True)
202
202
 

8

Bucketname

2020/02/23 03:23

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -172,7 +172,7 @@
172
172
 
173
173
 
174
174
 
175
- speech = 'aws polly start-speech-synthesis-task --region us-west-1 --endpoint-url "https://polly.us-west-1.amazonaws.com/" --output-format mp3 --output-s3-bucket-name txttxt --voice-id Justin --text "'+format(polly)+'"'
175
+ speech = 'aws polly start-speech-synthesis-task --region us-west-1 --endpoint-url "https://polly.us-west-1.amazonaws.com/" --output-format mp3 --output-s3-bucket-name --voice-id Justin --text "'+format(polly)+'"'
176
176
 
177
177
 
178
178
 

7

アクセスキー等の記載を省いてPHP側・Python側のコードをコピペ

2020/02/23 03:21

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -114,7 +114,23 @@
114
114
 
115
115
  ``` polly.php
116
116
 
117
+ <?php
118
+
119
+ //putenv('USER=apache');
120
+
121
+ echo get_current_user(); // -> root
122
+
123
+
124
+
125
+ $polly='Hello world.';
126
+
127
+
128
+
117
- $tmp2=exec("python /usr/lib/python3.5/フルPATH/polly.py");
129
+ $tmp2=exec("python /usr/lib/python3.5/site-packages/youtube_transcript_api/polly.py $polly");
130
+
131
+ echo $tmp2;
132
+
133
+ ?>
118
134
 
119
135
  ```
120
136
 
@@ -148,13 +164,59 @@
148
164
 
149
165
  import subprocess
150
166
 
151
-
152
-
153
- polly = "Hey Jotaro"
154
-
155
-
156
-
157
- ahoi = 'aws polly start-speech-synthesis-task --region us-west-1 --endpoint-url "https://polly.us-west-1.amazonaws.com/" --output-format mp3 --output-s3-bucket-name bucket-name --voice-id Justin --text "'+format(polly)+'"'
167
+ from pathlib import Path
168
+
169
+
170
+
171
+ polly = sys.argv[1]
172
+
173
+
174
+
175
+ speech = 'aws polly start-speech-synthesis-task --region us-west-1 --endpoint-url "https://polly.us-west-1.amazonaws.com/" --output-format mp3 --output-s3-bucket-name txttxt --voice-id Justin --text "'+format(polly)+'"'
176
+
177
+
178
+
179
+ out = subprocess.check_output(speech, shell=True)
180
+
181
+ out = out.decode('utf-8')
182
+
183
+ import json
184
+
185
+ data = json.loads(out)
186
+
187
+ print(data['SynthesisTask']['OutputUri'])
188
+
189
+ soundurl=data['SynthesisTask']['OutputUri']
190
+
191
+
192
+
193
+ import time
194
+
195
+ time.sleep(10)
196
+
197
+
198
+
199
+ publicread = 'aws s3api put-object-acl --bucket txttxt --key '+soundurl+' --acl public-read'
200
+
201
+ out2 = subprocess.call(publicread, shell=True)
202
+
203
+
204
+
205
+ new_dir_path4 = '/var/www/html/t4/'
206
+
207
+ if not os.path.exists(new_dir_path4):
208
+
209
+ os.mkdir(new_dir_path4)
210
+
211
+ file4 = '/var/www/html/t4/hello.txt'
212
+
213
+ Path(file4).touch()
214
+
215
+
216
+
217
+ with open(file4,'w', encoding='utf8') as f:
218
+
219
+ print(soundurl, file=f)
158
220
 
159
221
  ```
160
222
 
@@ -166,7 +228,7 @@
166
228
 
167
229
  sh: -c: line 0: syntax error near unexpected token `('
168
230
 
169
- sh: -c: line 0: `python /PATH/polly.py
231
+ sh: -c: line 0: `python /usr/lib/python3.5/フルPATH/polly.py
170
232
 
171
233
  Unable to locate credentials. You can configure credentials by running "aws configure".
172
234
 

6

2020/02/23 02:31

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ### 実現したい事:
10
10
 
11
- PHPからPythonファイルを実行。Amazon CLIからpollyを使って、公開状態でS3にファイル生成したい。
11
+ PHPからPythonファイルを実行。Amazon CLIからpollyを使って、公開状態でS3に音声ファイル生成したい。
12
12
 
13
13
 
14
14
 
@@ -22,15 +22,15 @@
22
22
 
23
23
  コマンドラインから
24
24
 
25
- /PATH/polly.py
25
+ /usr/lib/python3.5/フルPATH/polly.py
26
26
 
27
27
  を実行すると、何の問題もなくPollyを実行できる。
28
28
 
29
- S3にファイル生成も出来る。
29
+ S3に音声ファイル生成も出来る。
30
30
 
31
31
  aws s3api put-object-acl --bucket bucket_name --acl public-read key path
32
32
 
33
- 等として、後から公開状態にする事も出来る。
33
+ 等として、(後から)公開状態にする事も出来る。
34
34
 
35
35
 
36
36
 
@@ -90,7 +90,7 @@
90
90
 
91
91
 
92
92
 
93
- #### 2:CLIではなく、コード上にAWSのsecret access keyを記述して音声ファイルを出力すれば動く
93
+ #### 2:CLIではなく、コード上にAWSのsecret access keyを記述して音声ファイルを出力すれば動く
94
94
 
95
95
  出力先が/var/www/html/だったので、公開非公開のコントロールも容易にできた。
96
96
 
@@ -98,6 +98,8 @@
98
98
 
99
99
  #### 3:AMAZON POLLYは1500文字以上はCLI経由で実行しないといけないため、どうしてもCLIにする必要があるため、その他、『Python 環境変数とは?』等と検索しながら概念を理解しようと試みた。
100
100
 
101
+ NGだった。
102
+
101
103
  今日も又、朝から16時間以上1個のバグで消耗。これまでに、同様の
102
104
 
103
105
  『PHPとPython間のユーザー権限の連携がうまくいってない。』
@@ -172,7 +174,7 @@
172
174
 
173
175
 
174
176
 
175
- こちらは、WEBブラウザ上からEXEC(python /PATH/polly.py);が記載してあるPHPファイルを開いて表示させた時のエラーです。
177
+ こちらは、WEBブラウザ上からEXEC(python /usr/lib/python3.5/フルPATH/polly.py);が記載してあるPHPファイルを開いて表示させた時のエラーです。
176
178
 
177
179
 
178
180
 
@@ -190,6 +192,32 @@
190
192
 
191
193
 
192
194
 
195
+ 但し、PHP pythonをまたぐとファイル生成もできない現象は、aws利用の時に限りません。
196
+
197
+ まずは、
198
+
199
+
200
+
201
+ 実行ユーザーとは?
202
+
203
+ どこでコントロールできるのか?
204
+
205
+ PHP echo get_current_user;でroot/apacheと表示されたらpython側でどう対応すれば良いか?
206
+
207
+
208
+
209
+ といった概念を私が理解する必要があります。
210
+
211
+
212
+
213
+ ちなみに、
214
+
215
+ コマンドラインからpython経由で生成したファイルのユーザー/グループはroot。
216
+
217
+ PHP経由でpythonを実行した際(動作しない時)は、apacheです。
218
+
219
+
220
+
193
221
  PHPからPythonを使い始めた当初から、ハマり続けています。
194
222
 
195
223
  このまるまる1日一つのバグで前に進まない状況を抜け出したいと考えています。

5

2020/02/23 01:11

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  1.WEBブラウザ上から、全く同じPYTHONファイルを、
42
42
 
43
- 2.<?php exec("python /PATH/polly.py"); ?>にて実行
43
+ 2.<?php exec("python /usr/lib/python3.5/フルPATH/polly.py"); ?>にて実行
44
44
 
45
45
 
46
46
 
@@ -56,6 +56,8 @@
56
56
 
57
57
  ####1:sudo visudoで、分からないなりに、下記の行を全部追記して、apacheを再起動した。NGだった。
58
58
 
59
+ ```
60
+
59
61
  root ALL=(ALL) ALL
60
62
 
61
63
  apache ALL=(ALL) ALL
@@ -84,6 +86,8 @@
84
86
 
85
87
  www-data ALL=(ALL) ALL
86
88
 
89
+ ```
90
+
87
91
 
88
92
 
89
93
  #### 2:CLIではなく、コード上にAWSのsecret access keyを記述して音声ファイルを出力すれば動く
@@ -106,17 +110,17 @@
106
110
 
107
111
  ###PHP側
108
112
 
109
- """polly.php
113
+ ``` polly.php
110
-
114
+
111
- $tmp2=exec("python /PATH/polly.py");
115
+ $tmp2=exec("python /usr/lib/python3.5/フルPATH/polly.py");
112
-
116
+
113
- """
117
+ ```
114
118
 
115
119
 
116
120
 
117
121
  ###PYTHON側
118
122
 
119
- """
123
+ ```
120
124
 
121
125
  #!/usr/bin/python3.5
122
126
 
@@ -150,13 +154,13 @@
150
154
 
151
155
  ahoi = 'aws polly start-speech-synthesis-task --region us-west-1 --endpoint-url "https://polly.us-west-1.amazonaws.com/" --output-format mp3 --output-s3-bucket-name bucket-name --voice-id Justin --text "'+format(polly)+'"'
152
156
 
153
- """
157
+ ```
154
-
155
-
156
-
157
-
158
-
158
+
159
+
160
+
159
- ###エラーメッセージ
161
+ ###エラー
162
+
163
+ ```
160
164
 
161
165
  sh: -c: line 0: syntax error near unexpected token `('
162
166
 
@@ -164,6 +168,8 @@
164
168
 
165
169
  Unable to locate credentials. You can configure credentials by running "aws configure".
166
170
 
171
+ ```
172
+
167
173
 
168
174
 
169
175
  こちらは、WEBブラウザ上からEXEC(python /PATH/polly.py);が記載してあるPHPファイルを開いて表示させた時のエラーです。
@@ -178,7 +184,7 @@
178
184
 
179
185
 
180
186
 
181
- 上記の通り、PHPからPythonをEXECで動かした時に、AWS動作以前に、ファイル生成(touch)すら動作しなくなる現象の、根本原因を理解したいのです。
187
+ 上記の通り、PHPからPythonをexecで動かした時に、AWS動作以前に、ファイル生成(touch)すら動作しなくなる現象の、根本原因を理解したいのです。
182
188
 
183
189
  (EC2に移動すれば解消するようであれば、引っ越しします)
184
190
 

4

/PATH/polly.pyは、PHPから実行したファイルも、コマンドラインから実行したファイルも、同じファイルです。

2020/02/23 00:34

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -38,9 +38,9 @@
38
38
 
39
39
 
40
40
 
41
- 1.WEBブラウザ上から、PHP実行
41
+ 1.WEBブラウザ上から、全く同じPYTHONファイル
42
42
 
43
- 2.<?php exec("python /PATH/polly.py"); ?>実行
43
+ 2.<?php exec("python /PATH/polly.py"); ?>にて実行
44
44
 
45
45
 
46
46
 
@@ -164,6 +164,10 @@
164
164
 
165
165
  Unable to locate credentials. You can configure credentials by running "aws configure".
166
166
 
167
+
168
+
169
+ こちらは、WEBブラウザ上からEXEC(python /PATH/polly.py);が記載してあるPHPファイルを開いて表示させた時のエラーです。
170
+
167
171
 
168
172
 
169
173
 

3

PHP側・PYTHON側双方のコードを追記

2020/02/22 16:50

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -104,6 +104,58 @@
104
104
 
105
105
 
106
106
 
107
+ ###PHP側
108
+
109
+ """polly.php
110
+
111
+ $tmp2=exec("python /PATH/polly.py");
112
+
113
+ """
114
+
115
+
116
+
117
+ ###PYTHON側
118
+
119
+ """
120
+
121
+ #!/usr/bin/python3.5
122
+
123
+ #coding:utf8
124
+
125
+ # -*- coding: utf-8 -*-
126
+
127
+
128
+
129
+ from boto3 import Session
130
+
131
+ from boto3 import resource
132
+
133
+ import boto3
134
+
135
+ from contextlib import closing
136
+
137
+ import itertools
138
+
139
+ import os
140
+
141
+ import sys
142
+
143
+ import subprocess
144
+
145
+
146
+
147
+ polly = "Hey Jotaro"
148
+
149
+
150
+
151
+ ahoi = 'aws polly start-speech-synthesis-task --region us-west-1 --endpoint-url "https://polly.us-west-1.amazonaws.com/" --output-format mp3 --output-s3-bucket-name bucket-name --voice-id Justin --text "'+format(polly)+'"'
152
+
153
+ """
154
+
155
+
156
+
157
+
158
+
107
159
  ###エラーメッセージ
108
160
 
109
161
  sh: -c: line 0: syntax error near unexpected token `('
@@ -118,7 +170,7 @@
118
170
 
119
171
  ###頂くアンサーの方向性
120
172
 
121
- 今回は、AWSのエラーが出ているため、AWS configure関連のアドバイスも歓迎なのですが、
173
+ 今回は、AWSのエラーが出ているため、AWS configure/IAM関連のアドバイスも歓迎なのですが、
122
174
 
123
175
 
124
176
 

2

状況説明を追記

2020/02/22 16:46

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -92,9 +92,9 @@
92
92
 
93
93
 
94
94
 
95
- #### 3:AMAZON POLLYは1500文字以上はCLI経由で実行しないといけないため、どうしてもCLIにする必要があるため、その他、『Python 環境変数とは?』等と検索しながら概念をしようと試みた。
95
+ #### 3:AMAZON POLLYは1500文字以上はCLI経由で実行しないといけないため、どうしてもCLIにする必要があるため、その他、『Python 環境変数とは?』等と検索しながら概念を理解しようと試みた。
96
96
 
97
- し、これまでに、同様の
97
+ 今日も又、朝ら16時間以上1個のバグで消耗。これまでに、同様の
98
98
 
99
99
  『PHPとPython間のユーザー権限の連携がうまくいってない。』
100
100
 

1

タイトルを、省略せずに説明的に記載

2020/02/22 16:40

投稿

minamino
minamino

スコア7

test CHANGED
@@ -1 +1 @@
1
- 【初心者】PHPからPythonを実行する時の実行ユーザーの違いを解消したい
1
+ 【初心者】PHPからPythonを実行する際に、実行ユーザーの違いからファイル生成すらできなくなる現象を解消したい
test CHANGED
@@ -9,6 +9,12 @@
9
9
  ### 実現したい事:
10
10
 
11
11
  PHPからPythonファイルを実行。Amazon CLIからpollyを使って、公開状態でS3にファイル生成したい。
12
+
13
+
14
+
15
+ ###環境
16
+
17
+ SAKURA VPS CENTOS7 Python3.5
12
18
 
13
19
 
14
20
 
@@ -118,6 +124,8 @@
118
124
 
119
125
  上記の通り、PHPからPythonをEXECで動かした時に、AWS動作以前に、ファイル生成(touch)すら動作しなくなる現象の、根本原因を理解したいのです。
120
126
 
127
+ (EC2に移動すれば解消するようであれば、引っ越しします)
128
+
121
129
 
122
130
 
123
131
  PHPからPythonを使い始めた当初から、ハマり続けています。