From ef4cb2e97a845c721a11a27e45fc64566d102220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20L=C3=BCck?= Date: Sun, 13 Feb 2022 18:27:13 +0100 Subject: [PATCH] Support spawning worker process from within PHARs without file extension --- .github/workflows/ci.yml | 2 ++ src/Factory.php | 8 ++++---- tests/install-as-dep/.gitignore | 2 ++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0367d93..6355356 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,3 +38,5 @@ jobs: if: ${{ matrix.php < 7.3 }} - run: cd tests/install-as-dep && composer install && php query.php - run: cd tests/install-as-dep && php -d phar.readonly=0 vendor/bin/phar-composer build . query.phar && php query.phar + - run: cd tests/install-as-dep && mv query.phar query.ext && php query.ext + - run: cd tests/install-as-dep && mv query.ext query && php query diff --git a/src/Factory.php b/src/Factory.php index 7e7f6ca..5710522 100644 --- a/src/Factory.php +++ b/src/Factory.php @@ -229,8 +229,8 @@ private function openProcessIo($filename, $flags = null) $cwd = null; $worker = \dirname(__DIR__) . '/res/sqlite-worker.php'; - if (\class_exists('Phar', false) && \Phar::running(false) !== '') { - $worker = '-r' . 'require(' . \var_export($worker, true) . ');'; // @codeCoverageIgnore + if (\class_exists('Phar', false) && ($phar = \Phar::running(false)) !== '') { + $worker = '-r' . 'Phar::loadPhar(' . var_export($phar, true) . ');require(' . \var_export($worker, true) . ');'; // @codeCoverageIgnore } else { $cwd = __DIR__ . '/../res'; $worker = \basename($worker); @@ -297,8 +297,8 @@ private function openSocketIo($filename, $flags = null) $cwd = null; $worker = \dirname(__DIR__) . '/res/sqlite-worker.php'; - if (\class_exists('Phar', false) && \Phar::running(false) !== '') { - $worker = '-r' . 'require(' . \var_export($worker, true) . ');'; // @codeCoverageIgnore + if (\class_exists('Phar', false) && ($phar = \Phar::running(false)) !== '') { + $worker = '-r' . 'Phar::loadPhar(' . var_export($phar, true) . ');require(' . \var_export($worker, true) . ');'; // @codeCoverageIgnore } else { $cwd = __DIR__ . '/../res'; $worker = \basename($worker); diff --git a/tests/install-as-dep/.gitignore b/tests/install-as-dep/.gitignore index 070e2f2..a8bc0cd 100644 --- a/tests/install-as-dep/.gitignore +++ b/tests/install-as-dep/.gitignore @@ -1,3 +1,5 @@ /composer.lock +/query +/query.ext /query.phar /vendor/