【发布时间】:2014-07-02 12:10:16
【问题描述】:
我有一个下载 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
中的一个文件运行的【问题讨论】:
标签: php shell curl composer-php command-line-interface