ext_loading.phpt 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. function loadZendExt($extension) {
  13. $cmd = [
  14. PHP_BINARY, '-n',
  15. '-dextension_dir=' . ini_get('extension_dir'),
  16. '-dzend_extension=' . $extension,
  17. '-r', 'echo "Done.";'
  18. ];
  19. $proc = proc_open($cmd, [['null'], ['pipe', 'w'], ['redirect', 1]], $pipes);
  20. echo "Output: ", stream_get_contents($pipes[1]), "\n";
  21. }
  22. echo "Only extension name:\n";
  23. loadZendExt('opcache');
  24. echo "Name with file extension:\n";
  25. $name = PHP_OS_FAMILY == 'Windows' ? 'php_opcache.dll' : 'opcache.so';
  26. loadZendExt($name);
  27. echo "Absolute path:\n";
  28. $path = ini_get('extension_dir') . DIRECTORY_SEPARATOR . $name;
  29. loadZendExt($path);
  30. echo "Unknown extension name (unknown):\n";
  31. loadZendExt('unknown_ext');
  32. echo "Name with file extension (unknown):\n";
  33. $name = PHP_OS_FAMILY == 'Windows' ? 'php_unknown_ext.dll' : 'unknown_ext.so';
  34. loadZendExt($name);
  35. echo "Absolute path (unknown):\n";
  36. $path = ini_get('extension_dir') . DIRECTORY_SEPARATOR . $name;
  37. loadZendExt($path);
  38. ?>
  39. --EXPECTF--
  40. Only extension name:
  41. Output: Done.
  42. Name with file extension:
  43. Output: Done.
  44. Absolute path:
  45. Output: Done.
  46. Unknown extension name (unknown):
  47. Output:
  48. Warning: Failed loading Zend extension 'unknown_ext' (tried: %s) in Unknown on line 0
  49. Done.
  50. Name with file extension (unknown):
  51. Output:
  52. Warning: Failed loading Zend extension '%Sunknown_ext%S' (tried: %s) in Unknown on line 0
  53. Done.
  54. Absolute path (unknown):
  55. Output: Failed loading %s
  56. Done.