socket-uds-numeric-ugid-nonroot.phpt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. --TEST--
  2. FPM: UNIX socket owner and group settings can be numeric
  3. --SKIPIF--
  4. <?php
  5. include "skipif.inc";
  6. FPM\Tester::skipIfRoot();
  7. FPM\Tester::skipIfPosixNotLoaded();
  8. ?>
  9. --FILE--
  10. <?php
  11. require_once "tester.inc";
  12. $cfg = <<<EOT
  13. [global]
  14. error_log = {{FILE:LOG}}
  15. [unconfined]
  16. listen = {{ADDR:UDS}}
  17. listen.owner = {{UID}}
  18. listen.group = {{GID}}
  19. user = {{USER}}
  20. ping.path = /ping
  21. ping.response = pong
  22. pm = dynamic
  23. pm.max_children = 5
  24. pm.start_servers = 2
  25. pm.min_spare_servers = 1
  26. pm.max_spare_servers = 3
  27. EOT;
  28. $tester = new FPM\Tester($cfg);
  29. $tester->testConfig();
  30. $tester->start();
  31. $tester->expectLogNotice(
  32. "'user' directive is ignored when FPM is not running as root",
  33. 'unconfined'
  34. );
  35. $tester->expectLogStartNotices();
  36. $tester->ping('{{ADDR:UDS}}');
  37. $st = stat($tester->getListen('{{ADDR:UDS}}'));
  38. if ($st) {
  39. $pw = posix_getpwuid($st['uid']);
  40. $gr = posix_getgrgid($st['gid']);
  41. $user = $pw ? $pw['name'] : 'UNKNOWN';
  42. $group = $gr ? $gr['name'] : 'UNKNOWN';
  43. echo "{$st['uid']}/{$user},{$st['gid']}/{$group}\n";
  44. } else {
  45. echo "stat failed for " . $tester->getListen('{{ADDR:UDS}}');
  46. }
  47. $tester->terminate();
  48. $tester->expectLogTerminatingNotices();
  49. $tester->close();
  50. ?>
  51. Done
  52. --EXPECTF--
  53. %d/%s,%d/%s
  54. Done
  55. --CLEAN--
  56. <?php
  57. require_once "tester.inc";
  58. FPM\Tester::clean();
  59. ?>