summaryrefslogtreecommitdiff
path: root/sapi/cli
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-10-21 10:34:34 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-10-21 12:16:56 +0200
commit3966c0f8a47225486865d7cdef2552f746dd274c (patch)
tree9a233fa7dd9c3b69ca8ac6062b98e0ea2ef84a65 /sapi/cli
parent5998b2a3a65042dc7fc4f70945dd72e4e258500f (diff)
downloadphp-git-3966c0f8a47225486865d7cdef2552f746dd274c.tar.gz
Add test for zend_extension loading
Closes GH-6363.
Diffstat (limited to 'sapi/cli')
-rw-r--r--sapi/cli/tests/ext_loading.phpt65
1 files changed, 65 insertions, 0 deletions
diff --git a/sapi/cli/tests/ext_loading.phpt b/sapi/cli/tests/ext_loading.phpt
new file mode 100644
index 0000000000..220302da62
--- /dev/null
+++ b/sapi/cli/tests/ext_loading.phpt
@@ -0,0 +1,65 @@
+--TEST--
+Extension loading
+--SKIPIF--
+<?php
+$extDir = ini_get('extension_dir');
+if (!file_exists($extDir . '/opcache.so') && !file_exists($extDir . '/php_opcache.dll')) {
+ die('skip Opcache shared object not found in extension_dir');
+}
+?>
+--FILE--
+<?php
+
+
+function loadZendExt($extension) {
+ $cmd = [
+ PHP_BINARY, '-n',
+ '-dextension_dir=' . ini_get('extension_dir'),
+ '-dzend_extension=' . $extension,
+ '-r', 'echo "Done.";'
+ ];
+ $proc = proc_open($cmd, [['null'], ['pipe', 'w'], ['redirect', 1]], $pipes);
+ echo "Output: ", stream_get_contents($pipes[1]), "\n";
+}
+
+echo "Only extension name:\n";
+loadZendExt('opcache');
+
+echo "Name with file extension:\n";
+$name = PHP_OS_FAMILY == 'Windows' ? 'php_opcache.dll' : 'opcache.so';
+loadZendExt($name);
+
+echo "Absolute path:\n";
+$path = ini_get('extension_dir') . DIRECTORY_SEPARATOR . $name;
+loadZendExt($path);
+
+echo "Unknown extension name (unknown):\n";
+loadZendExt('unknown_ext');
+
+echo "Name with file extension (unknown):\n";
+$name = PHP_OS_FAMILY == 'Windows' ? 'php_unknown_ext.dll' : 'unknown_ext.so';
+loadZendExt($name);
+
+echo "Absolute path (unknown):\n";
+$path = ini_get('extension_dir') . DIRECTORY_SEPARATOR . $name;
+loadZendExt($path);
+
+?>
+--EXPECTF--
+Only extension name:
+Output: Done.
+Name with file extension:
+Output: Done.
+Absolute path:
+Output: Done.
+Unknown extension name (unknown):
+Output:
+Warning: Failed loading Zend extension 'unknown_ext' (tried: %s) in Unknown on line 0
+Done.
+Name with file extension (unknown):
+Output:
+Warning: Failed loading Zend extension '%Sunknown_ext%S' (tried: %s) in Unknown on line 0
+Done.
+Absolute path (unknown):
+Output: Failed loading %s
+Done.