【发布时间】:2018-05-18 16:27:06
【问题描述】:
我对 PHP 和 Composer 还很陌生,并且在 20 年前使用过 Linux。我正在共享托管服务器(Hostinger)上开发一个网站,并尝试从 Cardinity 安装一个包(他们接受 VISA 付款)。我想使用我的网站上的这个包,我用 HTML/PHP/MySQL 等手工编写。
cardinity 的指令是执行以下指令(来自https://github.com/cardinity/cardinity-sdk-php):
$ php composer.phar require cardinity/cardinity-sdk-php
我已将其更改为:
$ php /usr/local/bin/composer.phar require cardinity/cardinity-sdk-php
这样它就可以正常运行了。
我有两个问题是:
我认为 composer 会为我找到并下载包(及其所需的子包)是否正确?除了执行这一行,我什么都不用做?
我应该在哪个目录中执行这个?
我的网站位于 /home/u123456789/public_html。我已经在 /home/u123456789/public_html 中执行了上述语句,并在该目录中得到了 composer.json 和 composer.lock 文件,以及 vendor 文件夹。但是,我的网站没有收到包裹。当我使用以下代码执行一个简单的 test.php 文件时(根据 Cardinity 的建议):
use Cardinity\Client;
$client = Client::create([
'consumerKey' => 'YOUR_CONSUMER_KEY',
'consumerSecret' => 'YOUR_CONSUMER_SECRET',
]);
我收到错误:致命错误:Class 'Cardinity\Client' not found in /home/u123456789/public_html/dev/test.php on line 32 这是在 Client::create线。我的 test.php 文件位于目录/home/u123456789/public_html/dev。
test.php 是否必须与 composer.json、composer.lock 和 vendor 位于同一目录中强>?
【问题讨论】:
-
Composer 在
vendor/autoload.php中生成一个自动加载文件,您需要手动将其包含在您的应用中。所以在第一个加载的 PHP 文件的顶部添加require_once '/path/to/vendor/autoload.php';。你应该准备好了。 -
您可以在作曲家手册中阅读更多内容:getcomposer.org/doc/01-basic-usage.md#autoloading
-
@Magnus - 非常感谢。这两天我一直在用头撞墙。另外:祝你新年快乐。 :)
标签: php json composer-php package