@@ -11,9 +11,18 @@ if (readline_info('done') !== NULL) {
11
11
?>
12
12
--FILE--
13
13
<?php
14
- $ php = getenv ('TEST_PHP_EXECUTABLE_ESCAPED ' );
15
- $ ini = getenv ('TEST_PHP_EXTRA_ARGS ' );
16
- $ descriptorspec = [['pipe ' , 'r ' ], STDOUT , STDERR ];
14
+ function runReplCodes ($ codes ) {
15
+ $ php = getenv ('TEST_PHP_EXECUTABLE_ESCAPED ' );
16
+ $ ini = getenv ('TEST_PHP_EXTRA_ARGS ' );
17
+ $ descriptorspec = [['pipe ' , 'r ' ], STDOUT , STDERR ];
18
+ foreach ($ codes as $ key => $ code ) {
19
+ echo "\n-------------- \nSnippet no. $ key: \n-------------- \n" ;
20
+ $ proc = proc_open ("$ php $ ini -a " , $ descriptorspec , $ pipes );
21
+ fwrite ($ pipes [0 ], $ code );
22
+ fclose ($ pipes [0 ]);
23
+ proc_close ($ proc );
24
+ }
25
+ }
17
26
18
27
$ codes = array ();
19
28
@@ -52,17 +61,26 @@ function a_function_with_some_name() {
52
61
a_function_w );
53
62
EOT ;
54
63
55
- foreach ($ codes as $ key => $ code ) {
56
- echo "\n-------------- \nSnippet no. $ key: \n-------------- \n" ;
57
- $ proc = proc_open ("$ php $ ini -a " , $ descriptorspec , $ pipes );
58
- fwrite ($ pipes [0 ], $ code );
59
- fclose ($ pipes [0 ]);
60
- proc_close ($ proc );
61
- }
62
-
64
+ runReplCodes ($ codes );
63
65
echo "\nDone \n" ;
66
+
64
67
$ dir = PHP_OS_FAMILY == 'Windows ' ? getenv ("USERPROFILE " ) : getenv ("HOME " );
65
68
var_dump (file_exists ($ dir . '/.php_history ' ));
69
+
70
+ $ php_history_tmp = sprintf ('%s%s%s ' , sys_get_temp_dir (), DIRECTORY_SEPARATOR , 'php_history ' );
71
+ putenv ('PHP_HISTFILE= ' . $ php_history_tmp );
72
+ var_dump (file_exists ($ php_history_tmp ));
73
+
74
+ $ last [6 ] = <<<EOT
75
+ echo 'Hello World';
76
+ exit
77
+ EOT ;
78
+ runReplCodes ($ last );
79
+ echo "\nDone \n" ;
80
+
81
+ $ php_history_path = PHP_OS_FAMILY == 'Windows ' ? getenv ("USERPROFILE " ) : $ php_history_tmp ;
82
+ var_dump (file_exists ($ php_history_path ));
83
+ @unlink ($ php_history_tmp );
66
84
?>
67
85
--EXPECT--
68
86
--------------
@@ -108,3 +126,14 @@ Parse error: Unmatched ')' in php shell code on line 1
108
126
109
127
Done
110
128
bool(true)
129
+ bool(false)
130
+
131
+ --------------
132
+ Snippet no. 6:
133
+ --------------
134
+ Interactive shell
135
+
136
+ Hello World
137
+
138
+ Done
139
+ bool(true)
0 commit comments