更新作曲家后,PHP-intercom无法正常工作

时间:2016-08-08 15:03:07

标签: php namespaces composer-php autoloader intercom

我最近使用作曲家进行了更新。更新后我在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文件中包含Intercom的方式:

use Intercom\IntercomBasicAuthClient;

1 个答案:

答案 0 :(得分:0)

我自己想通了。 问题出在PHP版本上。我使用的是php-5.5,内部通信库严格要求PHP版本&gt; = 5.6。

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