最近使用composer更新。更新后,我在php文件中得到错误,我将数据发送到对讲机。这是错误:
Fatal error: Class 'IntercomIntercomBasicAuthClient' not found in <filename>
我在这里发现了一个类似的问题,Symfony Exception (Class not found)仅在开发和生产服务器上。但不知道该如何解决这个问题。我试过用大写和小写的对讲机,但问题没有解决。
在我的安装。我发现如下:
"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安装的两个库,这里缺少intercom。
所以我很困惑,真正的问题是什么?是否在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 IntercomIntercomBasicAuthClient;
我自己想出来的。问题是PHP版本。我使用的是PHP -5.5,对讲机库严格要求PHP版本>= 5.6。
使用Intercom api创建了我自己的库,以使其在php-5.5中工作。