質問編集履歴
15
タイトル修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
【初心者】PHPからPythonを実行する際に、実行ユーザーの違いからファイル生成すらできなくなる現象を解消したい
|
1
|
+
【初心者】PHPからPython(でAWS CLI)を実行する際に、実行ユーザーの違いからファイル生成すらできなくなる現象を解消したい
|
test
CHANGED
File without changes
|
14
冒頭に注意点を追記
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
言葉尻の変更。
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を下部に追記。次のステップのアドバイス依頼。
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を追記
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個追記
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
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 t
|
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
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
|
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側のコードをコピペ
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/
|
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
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
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
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
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
|
-
|
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を
|
187
|
+
上記の通り、PHPからPythonをexecで動かした時に、AWS動作以前に、ファイル生成(touch)すら動作しなくなる現象の、根本原因を理解したいのです。
|
182
188
|
|
183
189
|
(EC2に移動すれば解消するようであれば、引っ越しします)
|
184
190
|
|
4
/PATH/polly.pyは、PHPから実行したファイルも、コマンドラインから実行したファイルも、同じファイルです。
test
CHANGED
File without changes
|
test
CHANGED
@@ -38,9 +38,9 @@
|
|
38
38
|
|
39
39
|
|
40
40
|
|
41
|
-
1.WEBブラウザ上から、PH
|
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側双方のコードを追記
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
状況説明を追記
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
タイトルを、省略せずに説明的に記載
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を使い始めた当初から、ハマり続けています。
|