Я заметил, что в сборке PHP, которую я использую для разработки, не включены расширения xmlreader и xmlwriter. Я понимаю, что мне нужно перекомпилировать PHP, чтобы включить эти расширения (или, может быть, более точно удалить отключение, поскольку они включены по умолчанию?), Но у меня проблема с установкой соединения в моей голове, откуда мне нужно запустить ./configure и создать команды.

Вот моя команда настройки из вывода phpinfo ():

'./configure' '--build=i686-redhat-linux-gnu' '--host=i686-redhat-linux-gnu' \
 '--target=i386-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' \
 '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' \
 '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' \
 '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' \
 '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' \
 '--cache-file=../config.cache' '--with-libdir=lib' '--with-config-file-path=/etc' \
 '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' \
 '--disable-rpath' '--without-pear' '--with-bz2' '--with-exec-dir=/usr/bin' \
 '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-xpm-dir=/usr' \
 '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' \
 '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-pcre-regex=/usr' \
 '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' \
 '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' \
 '--enable-sysvmsg' '--with-kerberos' '--enable-ucd-snmp-hack' '--enable-shmop' \
 '--enable-calendar' '--without-mime-magic' '--without-sqlite' \
 '--with-libxml-dir=/usr' '--enable-xml' '--with-system-tzdata' \
 '--with-apxs2=/usr/sbin/apxs' '--without-mysql' '--without-gd' '--disable-dom' \
 '--disable-dba' '--without-unixODBC' '--disable-pdo' '--disable-xmlreader' \
 '--disable-xmlwriter' '--without-sqlite3' '--disable-phar' '--disable-fileinfo' \
 '--disable-json' '--without-pspell' '--disable-wddx' '--without-curl' \
 '--disable-posix' '--disable-sysvmsg' '--disable-sysvshm' '--disable-sysvsem' 

Обратите внимание, что он был скомпилирован с помощью --disable-xmlreader и --disable-xmlwriter. Согласно документации на http://www.php.net/manual/en/ xmlwriter.installation.php, я вижу, что это расширение включено по умолчанию. Как мне "отменить" отключение этого расширения?

Моя цель - иметь возможность использовать набор классов PHPExcel (http://phpexcel.codeplex.com/) но получаю фатальную ошибку, потому что один из классов пытается расширить класс XMLWriter.

0
jonwayne 8 Мар 2011 в 18:00
Я просто использую строку ./configure, за которой следуют make clean, make, make test и make install, чтобы перестроить PHP на RH ES4; но я гарантирую, что все rpms Redhat будут удалены в новой сборке сервера, используя rpm -e
 – 
Mark Baker
8 Мар 2011 в 18:06

2 ответа

Лучший ответ

Если вы используете один из дистрибутивов с бинарными пакетами (например, openSUSE), вы можете просто установить пакет php-xmlwriter как расширение.

Другой вариант - просто получите исходный код своей версии и скомпилируйте xmlwriter как модуль, используя phpize (дайте мне знать, если потребуется дополнительная помощь).

Если это не сработает - вам нужно будет получить исходный код и скомпилировать все с нуля. В этом случае configure запускается из папки, в которую вы распаковываете исходный код.

Следует иметь в виду еще одну вещь - любые расширения, которые вы установили прямо сейчас - вам нужно будет либо скомпилировать, либо перестроить с использованием полученного вами источника (если версия php не совпадает - тогда вы можете использовать уже установленные).

И, наконец, дистрибутивы обычно содержат несколько двоичных файлов php (например, CGI, модуль apache, cli). Вам нужно будет убедиться, что это (или любая другая часть, которая вам нужна) также включена в ваших командах настройки.

2
Sergey 8 Мар 2011 в 18:11
Если я воспользуюсь вашей первой рекомендацией (для установки в качестве расширения), я просто возьму .so для xmlwriter?
 – 
jonwayne
8 Мар 2011 в 18:24
1
Первый - вам нужно установить пакет RPM или DEB, который идет в комплекте с вашим дистрибутивом. "yum install php-xmlwriter" или "apt-get install php-xmlwriter". Или скачайте соответствующий пакет и установите.
 – 
Sergey
8 Мар 2011 в 19:28

Просто запустите команду configure в каталоге, в который вы извлекли исходный код (например, /home/user/php-5.3.5), и не включайте эти два параметра. То есть:

./configure -prefix=/usr ... <everything but --disable-xmlreader and --disable-xmlwriter>
1
Alex Howansky 8 Мар 2011 в 18:04
Возможно, я ошибаюсь, но я пробую locate php-5.3.2 и не вижу исходных файлов. Однако я нашел /var/cache/yum/remi/packages/php-5.3.2-2.el5.remi.i386.rpm. Должен ли я просто загрузить / извлечь последнюю версию и запустить на ней команду настройки?
 – 
jonwayne
8 Мар 2011 в 18:09
- по умолчанию у вас не будет исходных файлов. Приобретать их нужно отдельно.
 – 
Sergey
8 Мар 2011 в 18:12
Это то, что я бы порекомендовал, да.
 – 
Alex Howansky
8 Мар 2011 в 18:13