Jak používat PHP 4.4.9 (FastCGI) s Apache a ISPConfig 3 (Debian Wheezy)
Od ISPConfig 3.0.5 je možné používat více verzí PHP na jednom serveru a vybrat optimální verzi PHP pro web. Pokud máte na svém serveru nějaké velmi staré webové stránky, nemusí fungovat s PHP5, ale pouze s PHP4. Tento tutoriál ukazuje, jak sestavit PHP 4.4.9 jako FastCGI verzi pro použití s Apache2 na serveru Debian Wheezy. Tuto verzi PHP lze použít společně s výchozím PHP (instalovaným přes apt) v ISPConfig.
Neposkytuji žádnou záruku, že to pro vás bude fungovat!
1 předběžná poznámka
PHP-FPM není k dispozici pro PHP4, proto pouze popisuji, jak vytvořit FastCGI verzi PHP4. FastCGI je k dispozici pouze pro servery Apache, proto jej nelze použít s nginx..
2 Vytváření PHP 4.4.9 (FastCGI)
Nainstalujte předpoklady pro sestavení ze zdrojového kódu:
apt-get install build-essential
PHP 4.4.9 nelze zkompilovat s moderními verzemi OpenSSL, proto musíme nejprve nainstalovat starší verzi OpenSSL (0.9.8x):
cd /tmp
wget http://www.openssl.org/source/openssl-0.9.8x.tar.gz
tar xvfz openssl-0.9.8x.tar.gz
cd openssl -0.9.8x
./config --prefix=/usr/local/openssl-0.9.8
provést
provést instalaci
Stáhněte a rozbalte PHP 4.4.9:
mkdir /opt/phpfcgi-4.4.9
mkdir /usr/local/src/php4-build
cd /usr/local/src/php4-build
wget http://de. php.net/get/php-4.4.9.tar.bz2/from/this/mirror -O php-4.4.9.tar.bz2
tar jxf php-4.4.9.tar.bz2
cd php-4.4.9/
Vytvořte několik nezbytných symbolických odkazů:
ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/
ln -s /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/
ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 /usr/lib/
ln -s /usr/lib/x86_64-linux-gnu/libexpat.so /usr/ lib/
ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so /usr/lib/libmysqlclient.so
mkdir /usr/kerberos
ln -s /usr/ lib/x86_64-linux-gnu /usr/kerberos/lib
Dále musíme zakázat funkce mysql_drop_db a mysql_create_db, protože jinak se při pokusu o sestavení PHP 4.4.9 objeví tyto chyby:
chyba:nedefinovaný odkaz na 'mysql_drop_db'
chyba:nedefinovaný odkaz na 'mysql_create_db'
Otevřete /usr/local/src/php4-build/php-4.4.9/ext/mysql/php_mysql.c...
vi /usr/local/src/php4-build/php-4.4.9/ext/mysql/php_mysql.c
... a přejděte na řádek 1131. Odtud zakomentujte obě funkce:
[...] /*PHP_FUNCTION(mysql_create_db) { zval **db, **mysql_link; int id; php_mysql_conn *mysql; switch(ZEND_NUM_ARGS()) { case 1: if (zend_get_parameters_ex(1, &db)==FAILURE) { RETURN_FALSE; } id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); CHECK_LINK(id); break; case 2: if (zend_get_parameters_ex(2, &db, &mysql_link)==FAILURE) { RETURN_FALSE; } id = -1; break; default: WRONG_PARAM_COUNT; break; } php_error_docref(NULL TSRMLS_CC, E_NOTICE, "This function is deprecated, please use mysql_query() to issue a SQL CREATE DATABASE statement instead."); ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink); PHPMY_UNBUFFERED_QUERY_CHECK(); convert_to_string_ex(db); if (mysql_create_db(&mysql->conn, Z_STRVAL_PP(db))==0) { RETURN_TRUE; } else { RETURN_FALSE; } }*/ /* }}} */ /* {{{ proto bool mysql_drop_db(string database_name [, int link_identifier]) Drops (delete) a MySQL database */ /*PHP_FUNCTION(mysql_drop_db) { zval **db, **mysql_link; int id; php_mysql_conn *mysql; switch(ZEND_NUM_ARGS()) { case 1: if (zend_get_parameters_ex(1, &db)==FAILURE) { RETURN_FALSE; } id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); CHECK_LINK(id); break; case 2: if (zend_get_parameters_ex(2, &db, &mysql_link)==FAILURE) { RETURN_FALSE; } id = -1; break; default: WRONG_PARAM_COUNT; break; } php_error_docref(NULL TSRMLS_CC, E_NOTICE, "This function is deprecated, please use mysql_query() to issue a SQL DROP DATABASE statement instead."); ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink); convert_to_string_ex(db); if (mysql_drop_db(&mysql->conn, Z_STRVAL_PP(db))==0) { RETURN_TRUE; } else { RETURN_FALSE; } }*/ /* }}} */ [...] |
Nainstalujte si předpoklady pro sestavení PHP5 (v našem případě to také pokrývá předpoklady pro sestavení PHP4):
apt-get build-dep php5
Nakonfigurujte a sestavte PHP 4.4.9 následovně (příkaz ./configure si můžete upravit podle svých potřeb, podívejte se na
./configure --help
zobrazit všechny dostupné možnosti; pokud použijete jiný příkaz ./configure, je možné, že budou vyžadovány další knihovny nebo proces sestavení selže):
./configure \
--prefix=/opt/phpfcgi-4.4.9 \
--with-pdo-pgsql \
--with-zlib-dir \
- -with-freetype-dir \
--enable-mbstring \
--with-libxml-dir=/usr \
--enable-soap \
--enable- kalendář \
--with-curl \
--with-mcrypt \
--with-zlib \
--with-gd \
--with- pgsql \
--disable-rpath \
--enable-inline-optimization \
--with-bz2 \
--with-zlib \
-- enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-pcntl \
--enable-mbregex \
-- with-mhash \
--enable-zip \
--with-pcre-regex \
--with-mysql=/usr \
--with-mysql-sock =/var/run/mysqld/mysqld.sock \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--enable- gd-native-ttf \
--with-openssl=/usr/local/openssl-0.9.8 \
--with-openssl-dir=/usr/local/openssl-0.9.8 \
--with-libdir=/lib/x86_64-linux-gnu \
--enable-ftp \
--with-imap \
--with-imap-ssl \
--with-kerberos \
--with- gettext \
--with-expat-dir=/usr \
--enable-fastcgi
Poslední přepínač (--enable-fastcgi) zajišťuje, že tato verze PHP bude fungovat s FastCGI.
make
make install
Zkopírujte php.ini do správného umístění:
cp /usr/local/src/php4-build/php-4.4.9/php.ini-recommended /opt/phpfcgi-4.4.9/lib/php.ini
To je vše - nyní přidáme modul APC do naší instalace PHP 4.4.9:
cd /tmp
wget http://pecl.php.net/get/APC-3.0.19.tgz
tar xvfz APC-3.0.19.tgz
cd APC-3.0.19
/opt/phpfcgi-4.4.9/bin/phpize
./configure --enable-apc --enable-apc-mmap --with-php-config=/opt/phpfcgi-4.4. 9/bin/php-config
provést
provést instalaci
Poté otevřete /opt/phpfcgi-4.4.9/lib/php.ini...
vi /opt/phpfcgi-4.4.9/lib/php.ini
... a nastavte extension_dir ="/opt/phpfcgi-4.4.9/lib/php/extensions/no-debug-non-zts-20020429" a přidejte řádek extension=apc.so na konec souboru (vy můžete také nakonfigurovat některá další nastavení APC):
[...] extension_dir = "/opt/phpfcgi-4.4.9/lib/php/extensions/no-debug-non-zts-20020429" [...] extension=apc.so apc.enabled=1 apc.shm_segments=1 apc.shm_size=512 apc.ttl=0 apc.user_ttl=600 apc.gc_ttl=600 apc.enable_cli=1 apc.mmap_file_mask=/tmp/apc.XXXXXX ;apc.mmap_file_mask=/dev/zero ;apc.shm_segments = 5 |
V ISPConfig 3.0.5 můžete nakonfigurovat novou verzi PHP v části Systém> Další verze PHP. Na záložce Název pouze vyplníte název pro verzi PHP (např. PHP 4.4.9) - tato verze PHP bude uvedena pod tímto názvem v nastavení webu v ISPConfig:
Přejděte na kartu Nastavení FastCGI (záložka Nastavení PHP-FPM může zůstat prázdná) a vyplňte pole následovně:
Pokud vše funguje podle očekávání, můžete si nyní pro web v ISPConfig vybrat PHP 4.4.9. Verzi webu v PHP můžete zkontrolovat vytvořením souboru PHP pomocí phpinfo(); funkce v něm a volání tohoto souboru ve vašem prohlížeči:
3 odkazy
- PHP:http://www.php.net/
- ISPConfig:http://www.ispconfig.org/
- Ubuntu:http://www.ubuntu.com/
O autorovi
Falko Timme je vlastníkem Timme Hosting (ultrarychlý webhosting nginx). Je hlavním správcem HowtoForge (od roku 2005) a jedním z hlavních vývojářů ISPConfig (od roku 2000). Přispěl také do O'Reillyho knihy "Linux System Administration".