0

我最近使用作曲家更新。更新后,我在 php 文件中收到错误,我将数据发送到对讲机。这是错误:

Fatal error: Class 'Intercom\IntercomBasicAuthClient' not found in <filename>

我在这里发现了一个类似的问题Symfony Exception (Class not found) only on development and production servers。但无法确切了解如何解决该问题。我尝试在大写和小写中使用对讲机,但问题没有解决。

在我的 installed.json 中,我发现了这个:

"autoload": {
            "psr-4": {
                "Intercom\\": [
                    "src"
                ]
            }
        }

这是对讲文件的目录位置:

/public_html/vendor/intercom/intercom-php/src

当我深入研究更多的作曲家文件时(试图了解类是如何包含在内的),我在 autoload_namespaces.json 中遇到了这段代码

<?php

// autoload_namespaces.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'libphonenumber' => array($vendorDir . '/giggsey/libphonenumber-for-php/src'),
    'PhpAmqpLib' => array($vendorDir . '/php-amqplib/php-amqplib'),
);

libphonenumber 和 phpamqplib 是我使用 composer 安装的两个库,这里缺少对讲。

所以我很困惑,实际的问题是什么。autoload_namespace 中是否缺少对讲库,或者是大写-小写问题还是什么。

编辑 :

这是我在 autoload_psr4.php 中找到的

<?php

// autoload_psr4.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
    'JmesPath\\' => array($vendorDir . '/mtdowling/jmespath.php/src'),
    'Intercom\\' => array($vendorDir . '/intercom/intercom-php/src'),
    'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
    'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
    'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
    'Aws\\' => array($vendorDir . '/aws/aws-sdk-php/src'),
);

这就是我在我的 php 文件中包含对讲机的方式:

use Intercom\IntercomBasicAuthClient;
4

1 回答 1

0

我自己想通了。问题出在 PHP 版本上。我正在使用 php-5.5 并且对讲库严格要求 PHP 版本 >= 5.6 。

使用 Intercom API 创建了我自己的库,使其适用于 php-5.5。

于 2016-10-22T07:25:18.230 回答