Я разработчик ко-работник библиотека. Я добавляю функцию с исполняемым файлом phar в качестве приложения демонов. И обнаружил странное поведение с phar и процессом разветвления undex linux. Каждый раз, когда в главном процессе более 1 ребенка я получаю такую ошибку
include(phar:///opt/www/worker.phar/vendor/path/to/file.php):
failed to open stream: phar error: internal corruption of phar
"/opt/www/worker.phar" (crc32 mismatch on file "vendor/path/to/file.php")
in `phar:///opt/www/worker.phar/vendor/composer/ClassLoader.php` line 412
Заглушка (оригинальная заглушка здесь) фара выглядит как
#!/usr/bin/env php
<?php
Phar::mapPhar('worker.phar');
require_once 'phar://worker.phar/vendor/autoload.php';
//Execute next going fork code more then one 1 time
...
$pid = pcntl_fork();
if ($pid == -1) {
die('could not fork');
} else if ($pid) {
// we are the parent
...
} else {
// we are the child
...
exit(1);
}
__HALT_COMPILER();
я не использую cache_list. Это происходит, только если phar сжимается с помощью GZ или BZ2. Phar файлы без сжатия не воспроизводят эту ошибку. Есть ли обходные пути или может быть какая-то информация об ограничении сжатых файлов и разветвленном процессе?
Задача ещё не решена.
Других решений пока нет …