pro*_*rik 12 php linux proxy composer-php
我有一个qemu linux虚拟机,我正在尝试使用composer页面上的命令在其上安装composer。我在Windows网络上通过使用ntlm的代理访问Internet,因此我使用cntlm对PC上的linux和其他程序进行身份验证(这要感谢创建cntlm的人)。我将上下文添加到访问代理所需的copy命令中,但是它不起作用。
到目前为止,使用的命令是:
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php', stream_context_create(['https' => ['proxy' => 'http://10.0.2.2:3128/']]));"
# a variant
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php', stream_context_create(['https' => ['proxy' => 'tcp://10.0.2.2:3128/']]));"
Run Code Online (Sandbox Code Playgroud)
答案是:
PHP Warning: copy(https://getcomposer.org/installer): failed to open stream: Connection timed out in Command line code on line 1
Run Code Online (Sandbox Code Playgroud)
使用wget下载文件效果很好。
$ env | grep "proxy"
https_proxy=http://10.0.2.2:3128/
http_proxy=http://10.0.2.2:3128/
$ wget -O composer-setup.php https://getcomposer.org/installer
--2017-09-XX XX:XX:XX-- https://getcomposer.org/installer
Connecting to 10.0.2.2:3128 ... conected
Request send ... 200 OK
... etc
2017-09-XX XX:XX:XX (XX KB/s) - composer-setup.php saved [305728/305728]
Run Code Online (Sandbox Code Playgroud)
用作参考的网站:
我知道有一种手动方式来安装作曲家,但是我有点好奇,如何使这项工作有效?
您不一定必须使用PHP进行下载。
由于wget下载有效,因此您可以:
wget -O composer-setup.php https://getcomposer.org/installer
export EXPECTED_HASH=$(wget -q -O - https://composer.github.io/installer.sig)
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$EXPECTED_HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Run Code Online (Sandbox Code Playgroud)
没有的https选项stream_context_create(),只有http会影响http和的https协议:
http://和https://传输的上下文选项。
https://php.net/manual/zh/context.http.php
因此,您可能应该使用如下所示的内容:
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php', stream_context_create(['http' => ['proxy' => 'tcp://10.0.2.2:3128']]));"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
922 次 |
| 最近记录: |