Я недавно обновился с помощью композитора. После обновления я получаю сообщение об ошибке в php-файле, куда я отправляю данные по интеркому. Это ошибка:
Fatal error: Class 'Intercom\IntercomBasicAuthClient' not found in <filename>
Я нашел подобную проблему здесь Исключение Symfony (класс не найден) только на серверах разработки и производства. Но не мог понять, как именно решить проблему.
Я пытался использовать интерком в верхнем и нижнем регистре, но проблема не решена.
В моем установленном .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;
Я понял это сам.
Проблема была с версией PHP. Я использую php-5.5 и для внутренней библиотеки строго требуется версия PHP> = 5.6.
Создал свою собственную библиотеку, используя Интерком API, чтобы заставить ее работать на php-5.5.
Других решений пока нет …