【问题标题】:Integrate Composer into PHP web projects将 Composer 集成到 PHP Web 项目中
【发布时间】:2014-05-07 14:32:20
【问题描述】:

我想将 Composer 集成到一些网络项目中。因为我不能假设有人可以访问/www/htdocs 以上的任何内容,所以我的想法是为 web 项目提供 composer.phar 并使用 cronjob 触发更新程序,这样我就没有什么可做的了了解我的项目的更新。

问题是,为了能够触发作曲家,它需要 php.exe 的路径,并且不能保证将环境变量设置为 Linux 服务器。

有没有办法让 Composer 在不访问 php.ini 且不知道 php-programm 路径的情况下在 Web 服务器上工作?

【问题讨论】:

  • 也许这是一个愚蠢的问题,但您是否已经尝试过?如果是这样,错误是什么?我希望,由于 PATH 将包含 PHP 的路径,composer update 应该不会有问题,但这可能是我的乐观本性。
  • 确实如此,但我正在寻找一种始终有效的解决方案。如果我构建了一个其他用户可以使用的脚本,那么我可以确保作曲家每次都能正常工作,这一点很重要。它不应绑定到 PHP 的安装路径,或者是否设置了 php.exe 的 PATH。这个线程的问题是如何?!
  • 您指的是“php.exe”(仅限 Windows),但也提到了 Linux。你和哪个公司合作?
  • 对不起,我还在考虑我在 Windows(本地)上的测试,但我的目标是 Linux,所以忘记 .exe 扩展名。
  • 再次,我正在寻找一个解决方案,如果您不知道 php-programm-path 或无法修改 php.ini,您也可以将 composer 集成到 Web 项目中。

标签: php apache batch-file composer-php


【解决方案1】:

composer.phar 文件应该在为它试图运行的用户获取可执行标志时开箱即用,即/path/to/composer.phar 将在不添加 PHP 的情况下工作。在 Windows 上,.phar 文件在打开时可能应该与已安装的 PHP 版本相关联。

但有一件重要的事情:Composer 没有做任何与确保不间断生产服务相关的事情!那不是它的任务。始终考虑如果 Composer 所做的任何事情都失败了会发生什么。有很多组件可能会变得不可用,从 packagist.org、Github/Bitbucket/younameit 开始,在更新过程中意外抓取损坏的已发布版本,这将完全禁用更新过程,等等......

考虑一下在尝试添加这种基于 cron 的无需注意的更新步骤时添加的风险。

另一件事是您必须确保安装了将软件安装到机器上所需的工具。这意味着您必须至少有可用的 ZIP 工具,以及 tar/gz,并且取决于您是否安装分支(您不应该这样做,使用自动无人值守更新更是如此),您将需要安装 Git、Mercurial 和 SVN生产机器(如果您只安装标记版本,这也可能是真的)。所以不仅仅是对 PHP 的依赖,至少对这五个工具也有依赖。

【讨论】:

  • 你说得对,我忘记了。 Composer 不捕捉错误?在我看来,这也应该是一项任务。我想依靠它,如果有错误,则会收到错误消息。否则就没有我们可能会忽略的可能吗?
  • 我不会指望 Composer 在尝试更新时不会更改内容。由于随机但罕见的问题 - 例如解压缩过程中的“文件空间不足错误”,您最终可能会遇到不稳定的供应商目录树。请记住,Composer 仅处于 alpha 状态,尚未发布最终稳定版本。
猜你喜欢
  • 2012-04-05
  • 2017-07-23
  • 1970-01-01
  • 2012-06-29
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
  • 2014-08-08
相关资源
最近更新 更多