回答編集履歴

1

回答を修正します。

2020/08/21 03:50

投稿

showkit
showkit

スコア1638

test CHANGED
@@ -1,44 +1,4 @@
1
- 確かに動きませんね。別解になりそうですが
2
-
3
-
4
-
5
- 仮に
6
-
7
- ```plain
8
-
9
- /パス/test.sh
10
-
11
- ```
12
-
13
- というシェルスクリプトを作成して
14
-
15
- 下記の内容を書きます。
16
-
17
- ```sh
18
-
19
- #!/bin/sh
20
-
21
-
22
-
23
- USER=postgres
24
-
25
- DBNAME=restoretest
26
-
27
-
28
-
29
- dropdb -U $USER $DBNAME
30
-
31
- createdb -U $USER $DBNAME
32
-
33
-
34
-
35
- psql -U $USER -d $DBNAME -f /var/backup/project-20200820.sql
36
-
37
- ```
38
-
39
- 「/bin/sh」は、ご自分の環境に合わせて、パスを間違えないように。
40
-
41
- 作成した シェルスクリプトに実行権限を付けます
1
+ シェルスクリプトは 使わない、変数化したいということで・・・
42
2
 
43
3
 
44
4
 
@@ -46,11 +6,27 @@
46
6
 
47
7
  <?PHP
48
8
 
9
+ $user = 'postgres';
10
+
49
- $cmd = '/パス/test.sh';
11
+ $dbname = 'restoretest';
12
+
13
+ $sql = '/var/backup/project-20200820.sql';
50
14
 
51
15
 
52
16
 
53
- $message = shell_exec($cmd);
17
+ $message = shell_exec("dropdb -U $user $dbname");
18
+
19
+ echo $message;
20
+
21
+
22
+
23
+ $message = shell_exec("createdb -U $user $dbname");
24
+
25
+ echo $message;
26
+
27
+
28
+
29
+ $message = shell_exec("psql -U $user -d $dbname -f $sql");
54
30
 
55
31
  echo $message;
56
32
 
@@ -58,4 +34,6 @@
58
34
 
59
35
  ```
60
36
 
37
+ では、いかが?
38
+
61
- を実行すると、少なくとも、わたしの環境では、うまくいきました。
39
+ わたしの環境では、うまくいきました。