Composer 使用记录

Posted by David on 2014-04-10 in Web Development

随着 Composer 的流行,我们在项目中也开始使用它来管理第三方库依赖。出于安全考虑,我们一般都会在 php.ini 配置中禁用一些对站点安全有隐患的函数,而 Composer 正常运行所依赖的 phpinfo, getcwd, proc_open 等函数正处于被禁之列,怎么办呢?好在 php 命令行工具提供了 -c 和 -d 两个运行参数,可以使我们不致于因为安全的原因而无法使用 Composer 。

我们来看一下这两个参数的具体用途:

php --help
Usage: php [options] -- [args...]
   php [options] -a

  -a               Run as interactive shell
  -c path|file     Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'


那么,现在我们有两种做法:

拷贝一份 php.ini 配置,譬如命名为 php.cli.ini,并在此配置中不禁用上文提及的函数即可:

php -c /etc/php.cli.ini composer.phar

或者指定 -d 参数,取消禁用函数:

php -d disable_functions="" composer.phar

显然我们应该使用后者,这样可以避免大部分的 php 设置被重复配置。但是每次运行 composer 都要输入这么一长串命令显然有些不太方便,而 composer.phar 本身是一个可执行文件,通常我们会把它拷贝成 /usr/local/bin/composer 然后直接执行,那么我们只需要改变 composer 的默认脚本解释器来达到我们想要的目的。

创建 /usr/local/bin/php 文件,输入以下内容保存并添加可执行权限:

#!/bin/sh
/usr/local/php/5.4/bin/php -d disable_functions="" "$@"

然后将该文件软链接到 /usr/bin/php,此时便可直接执行 composer 命令而不受安全函数禁止限制了。

注:我们只在测试环境和预发布环境使用 composer,生产环境并不直接使用。

Tags: , .

Comments

  1. 1 umer23zep

    Hello. Good luck :

Leave a Reply

You can use these XHTML tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>