File: socket-uds-too-long-filename-start.phpt

package info (click to toggle)
php8.4 8.4.16-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 211,276 kB
  • sloc: ansic: 1,176,142; php: 35,419; sh: 11,964; cpp: 7,208; pascal: 4,951; javascript: 3,091; asm: 2,817; yacc: 2,411; makefile: 696; xml: 446; python: 301; awk: 148
file content (74 lines) | stat: -rw-r--r-- 1,603 bytes parent folder | download | duplicates (2)
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
--TEST--
FPM: UNIX socket filename is too for start
--SKIPIF--
<?php
include "skipif.inc"; ?>
--FILE--
<?php

require_once "tester.inc";
$socketFilePrefix = __DIR__ . '/socket-file';
$socketFile = sprintf(
    "%s-fpm-unix-socket-too-long-filename-but-starts-anyway%s.sock",
    $socketFilePrefix,
    str_repeat('-0000', 11)
);

$cfg = <<<EOT
[global]
error_log = {{FILE:LOG}}

[fpm_pool]
listen = $socketFile
pm = static
pm.max_children = 1
catch_workers_output = yes
EOT;

$tester = new FPM\Tester($cfg);
$tester->start();
$tester->expectLogStartNotices();
$tester->expectLogPattern(
    sprintf(
        '/\[pool fpm_pool\] cannot bind to UNIX socket \'%s\' as path is too long '
            . '\(found length: %d, maximal length: \d+\), trying cut socket path instead \'.+\'/',
        preg_quote($socketFile, '/'),
        strlen($socketFile)
    ),
    true
);

$files = glob($socketFilePrefix . '*');

if ($files === []) {
    echo 'Socket files were not found.' . PHP_EOL;
}

if ($socketFile === $files[0]) {
    // this means the socket file path length is not an issue (anymore). Might be not long enough
    echo 'Socket file is the same as configured.' . PHP_EOL;
}

$tester->terminate();
$tester->expectLogTerminatingNotices();
$tester->close();
?>
Done
--EXPECT--
Done
--CLEAN--
<?php
require_once "tester.inc";
FPM\Tester::clean();

// cleanup socket file if php-fpm was not killed
$socketFile = sprintf(
    "/socket-file-fpm-unix-socket-too-long-filename-but-starts-anyway%s.sock",
    __DIR__,
    str_repeat('-0000', 11)
);

if (is_file($socketFile)) {
    unlink($socketFile);
}
?>