我尝试在我的主机上安装 laravel 项目,我需要安装 Composer。如果我写
php composer.phar
我会收到消息:
Composer 无法通过 register_argc_argv=On 在非 cli sapi 上安全运行
我无权访问 PHP 配置文件,因为它似乎是共享托管。
完全同意@Yivi 的评论,Composer 不需要在生产中运行,理想情况下也不应该。当 Composer 作为构建/部署的一部分运行时,它将提取所有依赖项并生成相关的自动加载器配置,然后该配置将在不依赖于 Composer 二进制文件/phar 的情况下运行。只需部署包含
vendor/
目录的应用程序,它就应该按预期工作。
但特别是关于您收到的错误,似乎机器可能没有安装 php-cli 实例。相反,您可能正在调用 php-cgi 二进制文件,我相信它在技术上仍然可以在 CLI 上下文中运行,尽管它并不理想。
要检查正在使用的 SAPI,您可以运行:
php -r 'var_dump(php_sapi_name());'
并了解服务器上正在调用哪个二进制文件,运行:
which php; file $(which php)
这应该为您提供
php
的完整路径,并告诉您它是否是实际的二进制文件,或者是指向 php-cgi
等其他内容的符号链接。
如果发现您没有安装 php-cli,那么您可以通过发行版的包管理器安装相关的包如果需要。如果您只打算通过 Web 上下文运行 PHP,那么这是不必要的,并且可能会造成混淆,因为 CLI/CGI 实例可以并且确实经常使用不同的配置文件和/或完全不同的 PHP 版本。