【问题标题】:Composer.phar don't want to run by shell_exec from PHP script. Why?Composer.phar 不想由 shell_exec 从 PHP 脚本运行。为什么?
【发布时间】:2013-05-13 15:15:20
【问题描述】:

尝试使用所有可能的参数执行它,例如 -d 和完整路径等。没有错误。运行其他命令时,一切正常,从 CMD 运行 composer 时,一切正常。已经尝试过 exec、system、shell_exec 等。可能是什么?

echo system('php composer.phar install');

【问题讨论】:

    标签: php exec system composer-php shell-exec


    【解决方案1】:

    也尝试输出错误流:

    system('php composer.phar install 2>&1');
    

    它可能会给你更多关于出了什么问题的提示。

    【讨论】:

    • (假设你在 Linux 上运行)
    • 谢谢,现在出现错误 - 它说 env.variable "APPDATA" 未定义。我使用 putenv() 手动设置它,然后让它运行!但为什么它是未定义的?在 Windows 上运行。
    • 知道了,当composer从php脚本而不是cmd运行时,它不会导入PATH等环境变量。为此,我们需要手动执行,例如PATH变量是存储在 $_SERVER 中,可以通过 putenv('PATH=' . $_SERVER['PATH']) 从中导入 :)
    • 如果你得到错误“必须设置 HOME 或 COMPOSER_HOME 环境变量才能让 composer 正确运行” put putenv("COMPOSER_HOME=/absolute/path/to/composer.phar/directory");在调用 system() 之前
    • @ymakux 你救了我!效果很好,谢谢!
    【解决方案2】:

    试试这个

    $path = 'path where, composer.phar and composer.json exists';
    
    var_dump(shell_exec("
      cd $path;
      export COMPOSER_HOME=$path./.config/composer;
      php $path/composer.phar show -i 2>&1"));
    

    在 Linux 上测试。

    【讨论】:

      猜你喜欢
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      相关资源
      最近更新 更多