xdebug-handler icon indicating copy to clipboard operation
xdebug-handler copied to clipboard

PHP Warning: proc_open(): Exec failed: No such file or directory in phar

Open akaDJon opened this issue 1 month ago • 4 comments

php 8.1.23 + Xdebug 3 Debian GNU/Linux 11 (bullseye) nginx 1.18 + php-fpm Laravel 10.33.0 Composer version 2.7.4

I get this error

PHP Warning:  proc_open(): Exec failed: No such file or directory in phar:///usr/local/bin/composer_php81/vendor/composer/xdebug-handler/src/XdebugHandler.php on line 300 
PHP Stack trace:
PHP   1. {main}() /usr/local/bin/composer_php81:0
PHP   2. require() /usr/local/bin/composer_php81:29
PHP   3. Composer\XdebugHandler\XdebugHandler->check() phar:///usr/local/bin/composer_php81/bin/composer:29
PHP   4. Composer\XdebugHandler\XdebugHandler->restart($command = [0 => '', 1 => '-n', 2 => '-c', 3 => '/tmp/NylWn5', 4 => '/usr/local/bin/composer', 5 => 'install', 6 => '--dry-run']) phar:///usr/local/bin/composer_php81/vendor/composer/xdebug-handler/src/XdebugHandler.php:149 
PHP   5. Composer\XdebugHandler\XdebugHandler->doRestart($command = [0 => '', 1 => '-n', 2 => '-c', 3 => '/tmp/NylWn5', 4 => '/usr/local/bin/composer', 5 => 'install', 6 => '--dry-run']) phar:///usr/local/bin/composer_php81/vendor/composer/xdebug-handler/src/XdebugHandler.php:274 
PHP   6. proc_open($command = [0 => '', 1 => '-n', 2 => '-c', 3 => '/tmp/NylWn5', 4 => '/usr/local/bin/composer', 5 => 'install', 6 => '--dry-run'], $descriptor_spec = [], $pipes = NULL) phar:///usr/local/bin/composer_php81/vendor/composer/xdebug-handler/src/XdebugHandler.php:300 
Return code: 127

I try run this script from browser. (over nginx+php-fpm)

        $descriptors = [
            0 => ['pipe', 'r'], // stdin
            1 => ['pipe', 'w'], // stdout
            2 => ['pipe', 'w']  // stderr
        ];

        $process = proc_open('composer install --dry-run', $descriptors, $pipes);

        if (is_resource($process)) {
            fclose($pipes[0]);

            $output = stream_get_contents($pipes[1]);
            fclose($pipes[1]);

            $errors = stream_get_contents($pipes[2]);
            fclose($pipes[2]);

            $returnCode = proc_close($process);

            dump("Output: $output");
            dump("Errors: $errors");
            dump("Return code: $returnCode");
        }

akaDJon avatar May 05 '24 06:05 akaDJon