【发布时间】:2020-08-13 23:09:25
【问题描述】:
我正在尝试从 URL 运行 PHP 代码,因此当打开 URL 时,脚本必须在服务器 (Nginx) 上运行。
网址示例:https://my-server.com/deploy.php
我在这个脚本中有 3 个代码块:
- git pull(工作正常);
- rm -rf 供应商(工作正常);
- composer 安装(无效);
尝试调试,我把这部分代码改成:
$composer = shell_exec('composer install 2>&1');
echo "$composer";
注意:在使用 shell_exec 之前,我尝试使用 passthru,但这也不起作用。
所以我得到了这个错误:
sh: 1: composer: not found
又一次出现这个错误:
[RuntimeException]
The HOME or COMPOSER_HOME environment variable must be set for composer to run correctly
如果通过 SSH 命令运行相同的文件,例如:
php deploy.php
代码运行良好并执行 composer install。
一开始我以为可能是文件权限,所以我改成777,错误一直发生。
为什么 composer 命令在被 URL 调用时不起作用?有谁知道如何解决这个问题?
【问题讨论】:
-
PATH 和 HOME 对于 Apache 运行的 PHP 设置会有所不同。
-
你知道如何在 Nginx Server 中找到 PATH e HOME 的值吗?
-
可能是 /etc/default/nginx,也可能是 PHPs fpm pool config
env[PATH]? -
我得到了 composer 文档,在我的例子中是 /home/
/.composer。
标签: php composer-php web-deployment shell-exec