1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
--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_BEGIN####\n", stream_get_contents($pipes[1]), "\n######OUTPUT_END#####\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_BEGIN####
Done.
######OUTPUT_END#####
Name with file extension:
#####OUTPUT_BEGIN####
Done.
######OUTPUT_END#####
Absolute path:
#####OUTPUT_BEGIN####
Done.
######OUTPUT_END#####
Unknown extension name (unknown):
#####OUTPUT_BEGIN####
Warning: Failed loading Zend extension 'unknown_ext' (tried: %s) in Unknown on line 0
Done.
######OUTPUT_END#####
Name with file extension (unknown):
#####OUTPUT_BEGIN####
Warning: Failed loading Zend extension '%Sunknown_ext%S' (tried: %s) in Unknown on line 0
Done.
######OUTPUT_END#####
Absolute path (unknown):
#####OUTPUT_BEGIN####
Failed loading %s
Done.
######OUTPUT_END#####
|