Перекомпиляция PHP с помощью xmlreader, xmlwriter включен

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

Вот моя команда настройки из вывода 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.


person jonwayne    schedule 08.03.2011    source источник
comment
Я просто использую строку ./configure, за которой следует make clean, make, make test и make install, чтобы пересобрать PHP на RH ES4; но я гарантирую, что все RPM Redhat будут удалены на новой сборке сервера с помощью rpm -e   -  person Mark Baker    schedule 08.03.2011


Ответы (2)


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

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

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

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

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

person Sergey    schedule 08.03.2011
comment
Если я воспользуюсь вашей первой рекомендацией (установить как расширение), могу ли я просто взять .so для xmlwriter? - person jonwayne; 08.03.2011
comment
Первый — вам нужно установить пакет RPM или DEB, который поставляется с вашим дистрибутивом. yum установить php-xmlwriter или apt-get установить php-xmlwriter. Или скачайте соответствующий пакет и установите. - person Sergey; 08.03.2011
comment

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

./configure -prefix=/usr ... <everything but --disable-xmlreader and --disable-xmlwriter>
person Alex Howansky    schedule 08.03.2011
comment
Может я что-то не так делаю, но пробую locate php-5.3.2 и не вижу исходных файлов. Однако я нахожу /var/cache/yum/remi/packages/php-5.3.2-2.el5.remi.i386.rpm . Должен ли я просто загрузить / извлечь последнюю версию и запустить команду настройки? - person jonwayne; 08.03.2011
comment
@jonwayne - по умолчанию у вас не будет исходных файлов. Вам нужно получить их отдельно. - person Sergey; 08.03.2011
comment
Вот что я бы порекомендовал, да. - person Alex Howansky; 08.03.2011