【问题标题】:Install a package using composer. How? Where?使用 composer 安装一个包。如何?在哪里?
【发布时间】: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

这样它就可以正常运行了。

我有两个问题是:

  1. 我认为 composer 会为我找到并下载包(及其所需的子包)是否正确?除了执行这一行,我什么都不用做?

  2. 我应该在哪个目录中执行这个?

我的网站位于 /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


【解决方案1】:

请尝试让黑客更加困难,并将项目放置在不按照文档和遵循您自己的命名约定的属性中。

如果有人确实尝试访问“默认”,还可以添加一项安全措施。有人将您的钥匙作为退款对您造成了真正的伤害。

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 2015-03-19
    • 1970-01-01
    • 2011-08-21
    • 2021-06-05
    • 2012-10-11
    • 2015-09-26
    相关资源
    最近更新 更多