Pull to refresh

Устанавливаем расширение PHP 5 pdflib

Reading time3 min
Views14K

Задача


Есть довольно большой кусок кода, использующий для генерации PDF pdflib. Есть Windows + Денвер 3 на локальной машине и Ubuntu (+ стандартный набор — apache 2.2, php 5.2.10) на дев сервере. Задача: установить расширение PHP pdflib на обеих машинах. Проблема состоит в том, что:
1) бесплатная версия pdflib — pdflib lite на оффсайте существует только в виде исходных кодов;
2) в исходных кодах pdflib lite отсутствует код собственно расширения PHP pdflib (об этом я узнал не сразу, сначала пришлось набить несколько шишек);
3) в случае Ubuntu — в репозитории нет стандартного пакета с pdflib (может быть, он все-таки есть, но за 2 дня поисков я его так и не нашел);
4) в случае Windows — даже если бы были исходные коды расширения, ставить Visual Studio 6.0 только ради того, чтобы скомпилировать расширение желания никакого нет.

Решение для Windows + Денвер 3


Решение оказалось очень простым.
1. Заходим на http://php.net/releases/ и качаем коллекцию PECL модулей для той версии интерпретатора PHP, которая установлена у вас в Денвере 3. В случае последней версии Денвера 3 с оффсайта это php 5.2.4, поэтому качаем следующий zip архив: http://museum.php.net/php5/pecl-5.2.4-Win32.zip.

2. Из этого архива достаем заветную php_pdf.dll и кладем ее в

<denwer_root>\usr\local\php5\ext\

3. В <denwer_root>\usr\local\php5\php.ini находим секцию Windows Extensions и добавляем в нее строчку

extension=php_pdf.dll

4. Перезапускаем денвер — на этом установка расширения закончена.

В случае Ubuntu все оказалось несколько сложнее.

Решение для Ubuntu


1. Скачиваем исходный код pdflib lite с оффсайта:
wget http://www.pdflib.com/binaries/PDFlib/704/PDFlib-Lite-7.0.4p4.tar.gz

2. Распаковываем во временную директорию и переходим в нее:
tar -zxvf PDFlib-Lite-7.0.4p4.tar.gz - C /tmp
cd /tmp/PDFlib-Lite-7.0.4p4

3. Компилируем и устанавливаем pdflib lite:
./configure
make
make install

4. Компилируем и устанавливаем расширение PHP pdf.so с помощью утилиты pecl:
pecl install pdflib

Когда pecl спросит имя директории куда установлена pdflib lite — указываем

/usr/local

Если оказалось, что в вашем случае pdflib lite была установлена в другую директорию — указываем ее.

5. Подключаем расширение pdf.so.
После работы pecl может оказаться так, что расширение pecl поместила расширение pdf.so в вашу папку расширений php но не подключила его. В таком случае или прямо в конце php.ini дописываем строчку

extension=pdf.so

или создаем отдельный .ini файл в той директории, где находятся .ini файлы других расширений и это строчку записываем в него а не в php.ini.

6. Перезапускаем апач.
/etc/init.d/apache2 restart

Примечания


1. Если у вас не установлена утилита pecl, то вам необходимо ее установить с помощью следующей команды:
apt-get install dh-make-php php5-dev

2. Если вдруг при попытке установке какого-либо пакета с помощью apt-get install вы видите ошибку — файл не найден на сервере, то видимо вы давно не обновляли убунту. Вам необходимо обновить список пакетов с помощью команды
apt-get update

3. Если вы используете файлы windows шрифтов, которые имеют кодировку cp1251 а у вас в убунте локаль cp1251 отсутствует, то необходимо ее установить с помощью команды
localedef -c -i ru_RU -f CP1251 ru_RU.CP1251

4. По причине того, что бесплатная версия pdflib lite довольно сильно ограничена по функциональности, в новых проектах ее лучше не использовать. Для генерации pdf в новых проектах лучше взглянуть в сторону dompdf или FPDF.
Tags:
Hubs:
-5
Comments5

Articles

Change theme settings