|
Персональные инструменты |
|||
|
PHP под CygwinМатериал из CustisWikiПопулярность LAMP-приложений и необходимость править/пробовать/отлаживать эти приложения на Windows-станциях разработчиков не всегда может быть решена путем инсталляции Windows-версии PHP — т. к. web-приложение может активно использовать Linux-инфраструктуру внешних приложений: например, вызывать TeX, convert для растеризации изображений, иметь завязки на Unix-like пути и т.п. В таком случае, можно либо использовать виртуальную Linux-машину от VMware, либо, использовать Cygwin, который, по-хорошему, обязательно должен быть установлен на Windows-машине у опытного разработчика. Конечно, с точки зрения производительности, Cygwin не очень эффективен, но любим мы его не за это. Инсталляция LAMP-платформы может состоять из следующих шагов: СодержаниеИнсталляция apacheСтавится как пакет дистрибутива Cygwinа. Никаких особых проблем быть не должно. Инсталляция MySQLСерверная частьИмеет смысл выкачать ставить «чистокровною» Windows-версию, и инсталлировать ее согласно документации. Клиентская частьНеобходимо сборка под Cygwin.
Инсталляция PHPК сожалению, входящий в дистрибутив Cygwin веб-сервер apache лишен в данный момент (2006 г.) модуля mod_php. До 2004 года, этот модуль входил в состав Cygwin-apache, и поддерживался здесь, но был заброшен вследствии различных причин. Далее, мы опишем, как скомпилировать PHP под Cygwin и заставить его работать. Инструкция содержит некоторые нетривиальные шаги. Выкачиваем исходные коды PHP (php−4.3.11.tar.bz2) c http://www.php.net/ ( Нижеприведенное тестировалось для версии 4.3.11, но скорее всего, будет работать со всей линейкой PHP4) и разворачиваем архив: tar jxvf php-4.3.11.tar.bz2 Заходим в развернутый каталог: stas@ws-fomin /cygdrive/f/lib $ cd php-4.3.11/ stas@ws-fomin /cygdrive/f/lib/php-4.3.11 Запускаем configure (обратите внимание, все должно быть в одну строку, на несколько строк разбито только для читаемости): ./configure --with-apxs=/usr/sbin/apxs --enable-mbstring --with-mysql=/usr/local --with-pear --with-zlib --with-bz2 --with-gd Идет стандартное конфигурирование: stas@ws-fomin /cygdrive/f/lib/php-4.3.11 $ ./configure --with-apxs=/usr/sbin/apxs --enable-mbstring --with-mysql=/usr/local --with-pear --with-zlib --with-bz2 --with-gd loading cache ./config.cache checking host system type... i686-pc-cygwin checking for gcc... (cached) gcc checking whether the C compiler (gcc ) works... yes ... Thank you for using PHP. stas@ws-fomin /cygdrive/f/lib/php-4.3.11 $ Слегка правим Makefile: stas@ws-fomin /cygdrive/f/lib/php-4.3.11 $ sed -i.org 's/libphp4.so/libphp4.dll/g' Makefile
stas@ws-fomin /cygdrive/f/lib/php-4.3.11 $ make /bin/sh /cygdrive/f/lib/php-4.3.11/libtool --silent --preserve-dup-deps --mode=compile gcc -Iext/zlib/ -I/cygdrive/f/lib/php-4.3.11/ext/zlib/ -DPHP_ATOM_INC -I/cygdrive/f/lib/php-4.3.11/include -I/cygdrive/f/lib/php-4.3.11/main -I/cygdrive/f/lib/php-4.3.11 -I/cygdrive/f/lib/php-4.3.11/ext/mbstring/mbregex -I/cygdrive/f/lib/php-4.3.11/ext/mbstring/libmbfl -I/cygdrive/f/lib/php-4.3.11/ext/mbstring/libmbfl/mbfl -I/usr/local/include/mysql -I/cygdrive/f/lib/php-4.3.11/ext/xml/exp at -I/cygdrive/f/lib/php-4.3.11/TSRM -I/cygdrive/f/lib/php-4.3.11/Zend -g -O2 -c /cygdrive/f/lib/php-4.3.11/ext/zlib/zlib.c -o ext/zlib/zlib.lo .... Build complete. (It is safe to ignore warnings about tempnam and tmpnam). stas@ws-fomin /cygdrive/f/lib/php-4.3.11 $ Собираем библиотеки: cd libs Линкуем libphp4.dll (обратите внимание, опять все должно быть в одну строку, на несколько строк разбито только для читаемости): gcc -shared -o libphp4.dll -Wl,--out-implib=libphp4.dll.a -Wl,--export-all-symbols -Wl,--whole-archive libphp4.a /bin/cyghttpd.dll -Wl,--no-whole-archive -lcrypt -L/usr/local/lib/mysql -lmysqlclient -lpng -lz -lbz2 -lz -lresolv -lm Creating library file: libphp4.dll.a Info: resolving _ap_user_id by linking to __imp__ap_user_id (auto-import) Info: resolving _ap_group_id by linking to __imp__ap_group_id (auto-import) Info: resolving _ap_user_name by linking to __imp__ap_user_name (auto-import) Info: resolving _ap_max_requests_per_child by linking to __imp__ap_max_requests_per_child (auto-import) Info: resolving _ap_server_root by linking to __imp__ap_server_root (auto-import) Info: resolving _top_module by linking to __imp__top_module (auto-import) stas@ws-fomin /cygdrive/f/lib/php-4.3.11/libs $ Дальше, по-накатанной, инсталляция: $ cd .. $ make install Правка конфигурационного файла apache /etc/apache/httpd.conf Добавляем в файл строки: LoadModule php4_module lib/apache/libphp4.dll AddModule mod_php4.c В раздел, где идет «AddType application/» добавляем AddType application/x-httpd-php .php AddType application/x-httpd-php-source .php Проверяем, что расширение .php не встречается в командах вида AddHandler cgi-script Проверяем синтаксис: stas@ws-fomin /etc/apache $ /usr/sbin/apachectl configtest Syntax OK Запускаем apache: stas@ws-fomin /etc/apache $ /usr/sbin/apachectl start /usr/sbin/apachectl start: httpd started Для проверки, можно завести файл /var/www/htdocs/phpinfo.php с тестовым содержимым: <?php phpinfo(); ?> и вызвать его через броузер по адресу http://localhost/phpinfo.php . Репликация: База Знаний «Заказных Информ Систем» → «PHP под Cygwin» Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion». |
||