Отправка сообщения






Добро пожаловать!

Ошибки 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-расширения. Кстати, не забудьте проверить наличие бэкапа, перед тем как производить какие-либо операции по установки на сервере.

Добавил: htmaker, 17.01.2015 г.
 
плохослабосойдетхорошоотлично (2 голосов, средний: 5,00 из 5)
Загрузка...

Комментарии

  1. Ngree пишет:

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

  2. civaschenko пишет:

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

Добавить комментарий

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

Форум digital-planet.info

Комментарии

  • Загрузка...

Наверх