О web-разработке
и даже немного больше...

Ошибки PHPExcel при переносе на боевой сервер

Перенос скриптов на другой сервер может сопровождаться появлением некоторых ошибок, что приводит к неправильной работе сайта, либо неработоспособности вовсе. Многие сайты используют библиотеку PHPExcel, которая удобна в использовании, например для генерации отчетов, либо импорта некоторых данных из таблицы Excel. Использовать табличные данные можно для разных задач, в этом плане всё ограничивается вашими желаниями и амбициями. Классическая ситуация, вы пишите скрипты на локальном сервере, проверяете, тестируете – всё работает. И вот, сделав последний штрих, переносите скрипты на боевой сервер. Там может возникнуть немного другая картина, которая сопровождается появлением ошибок, в моей ситуации ошибки были инициированы библиотекой PHPExcel. Исправлять ошибки в таких ситуациях является хорошим тоном, особенно если это ошибки из серии Fatal error.

К счастью ошибок было немного, давайте посмотрим, что с этим можно сделать. Итак, первая ошибка:

Fatal error: Uncaught exception ‘PHPExcel_Exception’ with message ‘Multibyte function overloading in PHP must be disabled for string functions (2).’ in /PHPExcel/Autoloader.php

Сообщение об ошибке было гораздо длиннее, но чтобы не тянуть резину, решил сократить в пару строк. Суть ошибки в том, что в настройках интерпретатора, похоже, включена возможность перегрузки мультибайтовых строковых функции, что не дает этой библиотеке жить спокойно. Откуда я это знаю? Банальный перевод текста сообщения об ошибке может значительно облегчить ваш труд. Теперь о том, что дальше делать. Находим строку кода указанную ниже, в файле Autoloader.php, закомментируйте её.

if (ini_get('mbstring.func_overload') & 2) {
    throw new PHPExcel_Exception('Multibyte function overloading in PHP must be disabled for string functions (2).');
}

Запускаем скрипты для проверки, наблюдаем, как этой ошибки не стало. Кроме неё у меня было ещё и другое сообщение об ошибке.

Fatal error: Class ‘XMLWriter’ not found in /PHPExcel/Shared/XMLWriter.php on line 44

Начинаем разбираться: класс с именем «XMLWriter» не найден. А не найден он потому, что на рабочем сервере не было включено PHP-расширение «php-xmlwriter». Тут решение одно, нужно его установить. Если у вас нет доступа к консоли сервера – просите хостера, если есть хорошо, ставим расширение.

yum install php-xmlwriter

Веб-сервер на котором планировалось размещать скрипты работает на CentOS, если у вас другая операционная система, то используйте свои команды для установки PHP-расширения. Кстати, не забудьте проверить наличие бэкапа, перед тем как производить какие-либо операции по установки на сервере.

Опубликован: 17.01.2015 г.

См. также:

Редакторы кода для PHP
Как просмотреть время загрузки страницы в PHP?
Генерация QR-кода в PHP
Загрузка файлов на сервер посредством Ajax
Импорт записей из Excel в WordPress
Парсинг XML в PHP
Установка IonCube на XAMPP
Создание PDF файлов в PHP

Комментарии

  1. Ngree пишет:

    Спасибо, комментирование строки помогло обойти, ошибка падала в рез-те запуска скрипта из под крона

  2. civaschenko пишет:

    Спасибо, вылечил благодаря совету "yum install php-xmlwriter".

  3. Андрей пишет:

    Спасибо! решение Ваше помогло! благодарю, желаю приятного дня и прекрасного настроения!

Добавить комментарий для civaschenko Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта