【问题标题】:Installing composer dependencies from a script从脚本安装作曲家依赖项
【发布时间】:2014-07-04 09:09:48
【问题描述】:

我有一个可以下载并安装在服务器上的网络应用程序。

我不知道有问题的服务器,我所能做的就是假设,所以让我们这样做吧。

服务器在共享主机上 没有作曲家 无法安装 npm 之类的东西 用户不知道 CLI 是什么

考虑到这一点,我创建了一个 PHP 脚本,它将下载 composer 然后安装依赖项。

脚本只使用exec()

问题在于,为了安装依赖项,根文件夹需要是可写的,因为 Apache 不拥有该目录,并且正如有人指出的那样,这是一个安全漏洞。

我需要找到一种从 apache 安装依赖项的方法。不确定这是否可行,但我们不胜感激。

这是我下载composer并安装依赖项的代码:

mkdir('composer', 0777);
exec('curl -sS https://getcomposer.org/installer | php -- --install-dir=' . __DIR__ . '/composer');
exec('COMPOSER_HOME=' . __DIR__ . ' php composer/composer.phar install -d ' . dirname(__DIR__), $out, $return)

以上代码从/public 运行,并在其中创建一个名为composer 的目录。由于它归 apache 所有,我可以将 .phar 安装到其中并从那里调用它。

【问题讨论】:

标签: php apache composer-php command-line-interface


【解决方案1】:

使下载的代码包含依赖项。这将避免在您无法控制的环境中调用 Composer。

此外,这样做并没有任何好处,因为您想调用composer install,它将始终安装锁定在composer.lock 中的版本 - 如果不满足软件包的要求,这样做也会失败,例如错误的 PHP 版本或缺少扩展。无论如何,这是您必须自己解决的问题,但是您提出的代码对用户没有任何帮助。

所以选择包含所有依赖项的更大的可下载包。这样您就知道所有需要的代码都在那里,而不必担心在可卸载的环境中安装 Composer。

但是请注意,您不应该在管理您自己的代码的存储库中包含依赖项。您应该有某种打包和发布脚本,通过添加您自己的代码和 Composer 安装的代码来创建下载 ZIP。

【讨论】:

    猜你喜欢
    • 2014-05-31
    • 1970-01-01
    • 2014-04-20
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多