Skip to content

Commit 3966c0f

Browse files
committed
Add test for zend_extension loading
Closes GH-6363.
1 parent 5998b2a commit 3966c0f

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

sapi/cli/tests/ext_loading.phpt

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
--TEST--
2+
Extension loading
3+
--SKIPIF--
4+
<?php
5+
$extDir = ini_get('extension_dir');
6+
if (!file_exists($extDir . '/opcache.so') && !file_exists($extDir . '/php_opcache.dll')) {
7+
die('skip Opcache shared object not found in extension_dir');
8+
}
9+
?>
10+
--FILE--
11+
<?php
12+
13+
14+
function loadZendExt($extension) {
15+
$cmd = [
16+
PHP_BINARY, '-n',
17+
'-dextension_dir=' . ini_get('extension_dir'),
18+
'-dzend_extension=' . $extension,
19+
'-r', 'echo "Done.";'
20+
];
21+
$proc = proc_open($cmd, [['null'], ['pipe', 'w'], ['redirect', 1]], $pipes);
22+
echo "Output: ", stream_get_contents($pipes[1]), "\n";
23+
}
24+
25+
echo "Only extension name:\n";
26+
loadZendExt('opcache');
27+
28+
echo "Name with file extension:\n";
29+
$name = PHP_OS_FAMILY == 'Windows' ? 'php_opcache.dll' : 'opcache.so';
30+
loadZendExt($name);
31+
32+
echo "Absolute path:\n";
33+
$path = ini_get('extension_dir') . DIRECTORY_SEPARATOR . $name;
34+
loadZendExt($path);
35+
36+
echo "Unknown extension name (unknown):\n";
37+
loadZendExt('unknown_ext');
38+
39+
echo "Name with file extension (unknown):\n";
40+
$name = PHP_OS_FAMILY == 'Windows' ? 'php_unknown_ext.dll' : 'unknown_ext.so';
41+
loadZendExt($name);
42+
43+
echo "Absolute path (unknown):\n";
44+
$path = ini_get('extension_dir') . DIRECTORY_SEPARATOR . $name;
45+
loadZendExt($path);
46+
47+
?>
48+
--EXPECTF--
49+
Only extension name:
50+
Output: Done.
51+
Name with file extension:
52+
Output: Done.
53+
Absolute path:
54+
Output: Done.
55+
Unknown extension name (unknown):
56+
Output:
57+
Warning: Failed loading Zend extension 'unknown_ext' (tried: %s) in Unknown on line 0
58+
Done.
59+
Name with file extension (unknown):
60+
Output:
61+
Warning: Failed loading Zend extension '%Sunknown_ext%S' (tried: %s) in Unknown on line 0
62+
Done.
63+
Absolute path (unknown):
64+
Output: Failed loading %s
65+
Done.

0 commit comments

Comments
 (0)