laravel4 composer install 得到 proc_open 不可用错误

Posted

技术标签:

【中文标题】laravel4 composer install 得到 proc_open 不可用错误【英文标题】:laravel4 composer install got proc_open not available error 【发布时间】:2013-11-23 13:44:27 【问题描述】:

现在我正在尝试使用 composer 来安装我的 php 包,但我收到了以下错误消息: $作曲家安装

Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing filp/whoops (1.0.7)
    Downloading: 100%          

[Symfony\Component\Process\Exception\RuntimeException]                                   
The Process class relies on proc_open, which is not available on your PHP installation. 

编辑:

启用 proc_open 功能后,我收到此错误,并将我的 php memory_limit 设置为 384M:

Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:990
Stack trace:
#0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///usr/loc...', 990, Array)
#1 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(990): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
#2 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(832): Symfony\Component\Console\Application->getSttyColumns()
#3 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(797): Symfony\Component\Console\Application->getTerminalDimensions()
#4 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(731): Symfony\Component\Console\Application->getTerminalWidth()
#5 phar:///usr/local/bin/com in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 990

【问题讨论】:

在 cPanel 托管中遇到此问题,我没有希望通过激活该组件来修复它。您找到解决方法了吗? 【参考方案1】:

您应该使用 php-cli 暂时绕过 disable_functions

php -d "disable_functions=" /path/to/composer install

【讨论】:

为了扩展 efesaid 的答案,在 composer.json 我必须修改 php artisan optimize 命令,以便它也实现了 disable_functions。 @iUseMagentoNow 你能详细说明你的提示吗?按照 efesaid 的建议执行安装后,我从 php artisan optimize 得到了运行时异常。我在哪里和/或如何修改命令以临时运行带有禁用功能的 php? 当然,稍后我会在有能力的时候更新这个细节。如果你看看你的 Laravel composer.json 有一些工匠命令。修改优化命令,使其包含-d "disable_functions="【参考方案2】:

编辑您的php.ini 文件并搜索该行

disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait...

它应该在那里被禁用,你必须启用它。这是一项安全预防措施。

【讨论】:

“安全预防” - 不错的错字。您可能的意思是“安全预防措施”。 :) 如果你是对的,这些功能可能由于某种原因被禁用,所以请考虑启用它们。 proc_open(): fork failed - 无法分配内存。除了扩展我的记忆,还有其他解决方案吗?谢谢 如果你是对的,为什么 Laravel(以及 Homestead)需要这些功能?另外,为什么它们在 Windows 上都默认启用,使用 WAMP,而不是 Linux?

以上是关于laravel4 composer install 得到 proc_open 不可用错误的主要内容,如果未能解决你的问题,请参考以下文章

开始使用chef,并在部署时运行composer install

Laravel4 Composer 更新失败

laravel4 composer报错 d11wtq/boris v1.0.10 requires ext-pcntl

使用作曲家安装 Laravel 4 包

Composer - Forked Laravel 4.2 未安装

应该如何为 laravel 4 composer 包设置 git 子模块?