【问题标题】:Installing PHP Pear without user prompt在没有用户提示的情况下安装 PHP Pear
【发布时间】:2011-10-19 23:44:23
【问题描述】:

是否有命令行参数允许您在没有用户提示的情况下安装 PHP Pear?我想自动化以下执行:

wget http://pear.php.net/go-pear.phar
php go-pear.phar
pear config-set preferred_state beta
pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com
pear install --alldeps phpunit/PHPUnit
rm go-pear.phar

php go-pear.phar 提示用户输入安装/配置信息。

【问题讨论】:

  • 这可能是个愚蠢的问题,但是你能把这些命令放到一个 shell 脚本中吗?
  • 可以,但是php go-pear.phar会提示你选择安装目录
  • 哦,好吧......我想我还是把它扔在那里:)
  • 如果您没有找到其他方法,也许expect 可以帮助您自动化用户输入? manpage

标签: php automation pear


【解决方案1】:

原来expect 成功了。这是我最终得到的结果:

安装-pear.sh

#!/usr/bin/expect
spawn wget -O /tmp/go-pear.phar http://pear.php.net/go-pear.phar
expect eof

spawn php /tmp/go-pear.phar

expect "1-11, 'all' or Enter to continue:"
send "\r"
expect eof

spawn rm /tmp/go-pear.phar

安装-phpunit.sh

#!/bin/bash
./install-pear.sh
pear config-set preferred_state beta
pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com
pear install --alldeps phpunit/PHPUnit

运行:

sudo apt-get install expect
chmod 744 ./install-pear.sh
chmod 744 ./install-phpunit.sh
sudo ./install-phpunit.sh

【讨论】:

  • 我提交了一个更新脚本以考虑等待衍生进程终止,否则期望提前并在安装或文件下载之前终止
  • 对我不起作用。仍然卡在提示屏幕上。
【解决方案2】:

go-pear.phar 本身不通过 CLI 接受任何参数,因此在没有用户交互的情况下无法运行(除非使用像 expect 这样的输入工具)

当 phar 被执行时,文件go-pear-phar.php 被运行,该文件依次启动PEAR/Start/CLI.php。如您所见,getInstallLocations 确实会等待活跃的用户输入,而无法跳过它。

【讨论】:

    猜你喜欢
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 2014-11-17
    • 2012-04-13
    • 2011-12-06
    • 2017-03-20
    相关资源
    最近更新 更多