我有一个下载composer.phar 的php 脚本。
下载后我运行exec()
安装软件包。
文件夹结构是
--ROOT
--public
--composer.josn
然而,当我跑步时
exec('php composer.phar install -d ' . dirname(__DIR__), $out, $return);
我得到的输出是:
array(5) {
[0]=>
string(39) "All settings correct for using Composer"
[1]=>
string(14) "Downloading..."
[2]=>
string(0) ""
[3]=>
string(80) "Composer successfully installed to: /var/www/projects/funny/public/composer.phar"
[4]=>
string(25) "Use it: php composer.phar"
}
并且供应商软件包未安装。
只是要明确一点。这phar此时存档已经下载完毕,那么现在正在下载什么?运行此命令后,下载的 phar 的大小也从 200k 变为 900k。
这是下载和安装的完整代码:
$composer_path = __DIR__ . '/composer.phar';
$ch = curl_init();
$fh = fopen($composer_path, 'x');
curl_setopt_array($ch, array(
CURLOPT_URL => 'https://getcomposer.org/installer',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_FILE => $fh
));
$output = curl_exec($ch);
curl_close($ch);
fclose($fh);
exec('php composer.phar install -d ' . dirname(__DIR__), $out, $return);
上面的代码是从一个文件中运行的public