@borisevstratov

Интеграция Bitrix и Google Calendar?

Добрый день!

Пытаюсь интегрировать Google Calendar через PHP API: https://developers.google.com/calendar/quickstart/php
с проектом на Битрикс (установлена CentOS 7, Битрикс Веб-Окружение, настроен composer)

При попытке инициализировать PHP-пример https://github.com/gsuitedevs/php-samples/blob/mas...
через консоль:
php quickstart.php
происходит следующая ошибка:
PHP Fatal error:  Uncaught UnexpectedValueException: Overloading of string functions using mbstring.func_overload is not supported by phpseclib. in /home/bitrix/www/local/vendor/phpseclib/phpseclib/phpseclib/bootstrap.php:11
Stack trace:
#0 /home/bitrix/www/local/vendor/composer/autoload_real.php(66): require()
#1 /home/bitrix/www/local/vendor/composer/autoload_real.php(56): composerRequire42b6e0827500b0c2ab7479c76cf79675('decc78cc4436b12...', '/home/bitrix/ww...')
#2 /home/bitrix/www/local/vendor/autoload.php(7): ComposerAutoloaderInit42b6e0827500b0c2ab7479c76cf79675::getLoader()
#3 /home/bitrix/www/local/quickstart.php(2): require('/home/bitrix/ww...')
#4 {main}
  thrown in /home/bitrix/www/local/vendor/phpseclib/phpseclib/phpseclib/bootstrap.php on line 11

Как известно, Битрикс использует значение переменной mbstring.func_overload = 2, что как видно, недопустимо в этом скрипте.
Поэтому в файле конфигурации /etc/httpd/bx/conf/default.conf добавил следующий код, чтобы переопределить значение переменной mbstring.func_overload в папке local и перезапустил веб-сервер:
<Directory /home/bitrix/www/local>
		php_admin_value mbstring.func_overload 0
		php_value default_charset utf8
</Directory>

Но всё равно происходит та же самая ошибка. Причём, если выполнить функцию phpinfo() в папке local
То в отчёте будет видно, что у переменной mbstring.func_overload:
Local Value: 0
Master Value: 2


Как подружить Google Calendar и Битрикс?
  • Вопрос задан
  • 840 просмотров
Пригласить эксперта
Ответы на вопрос 2
serginhold
@serginhold
Возможно исключение там не спроста, но если есть уверенность что без него будет пакет нормально работать, то надо это исключение убрать. Как вариант форкнуть оба репозитория, в Гугл изменить composer.json на свой форк phpseclib, в котором убрать исключение
Ответ написан
Комментировать
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
У вас в скрипте вот эта библиотека phpseclib выдает ошибку.
Если вам надо не очень часто обращаться к api Google Calendar можно использовать такой костыль:
- Создать раздел в публичной части сайта. например ./func_overload_0
- В настройках сервера задать именно для нее mbstring.func_overload 0
- в index.php этого раздела разместить вызов методов для работы с API Google Calendar.
- В своих методах к этому коду обращаться через curl или же Main\Web\HttpClient()

mbstring.func_overload 0 для какой то директории будет работать если эта директория является точкой входа. Поэтому используя такой костыль можно заставить работать библиотеки вроде этой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы