如何使用PHP 4.4.9(FastCGI)与Apache&ISPConfig 3(Debian Wheezy)
自ISPConfig 3.0.5以来,可以在一个服务器上使用多个PHP版本,并为网站选择最佳的PHP版本。 如果您的服务器上有一些非常旧的网站,则可能无法使用PHP5,但只能使用PHP4。 本教程将介绍如何在Debian Wheezy服务器上将Apache 4.4.9作为FastCGI版本与Apache2一起使用。 这个PHP版本可以与ISPConfig中的默认PHP(通过apt安装)一起使用。
我不会保证这将为您工作!
1初步说明
PHP-FPM不适用于PHP4,因此我只是描述如何构建FastCGI版本的PHP4。 FastCGI仅适用于Apache服务器,因此您无法使用nginx ..
2构建PHP 4.4.9(FastCGI)
从源代码安装构建的先决条件:
apt-get install build-essential
PHP 4.4.9将无法使用现代OpenSSL版本进行编译,因此我们需要先安装一个较旧的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
make
make install
下载并提取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/
创建一些必要的符号链接:
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
接下来,我们必须禁用mysql_drop_db
和mysql_create_db的函数
,否则您将尝试构建PHP 4.4.9时会收到这些错误:
error: undefined reference to 'mysql_drop_db'
error: undefined reference to 'mysql_create_db'
打开/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
...并转到第1131行。从那里,注释掉这两个功能:
[...] /*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; } }*/ /* }}} */ [...] |
安装构建PHP5的先决条件(在我们的例子中,这也包括构建PHP4的先决条件):
apt-get build-dep php5
配置和构建PHP 4.4.9如下(您可以根据需要调整./configure
命令,看看
./configure --help
查看所有可用选项; 如果使用不同的./configure
命令,可能需要额外的库,否则构建过程将失败):
./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-calendar \
--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
最后一个开关( --enable-fastcgi
)确保这个PHP版本可以与FastCGI一起工作。
make
make install
将php.ini
复制到正确的位置:
cp /usr/local/src/php4-build/php-4.4.9/php.ini-recommended /opt/phpfcgi-4.4.9/lib/php.ini
就是这样 - 我们现在将APC模块添加到我们的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
make
make install
之后,打开/opt/phpfcgi-4.4.9/lib/php.ini
...
vi /opt/phpfcgi-4.4.9/lib/php.ini
...并设置extension_dir =“/opt/
phpfcgi-4.4.9/lib/php/extensions/no-debug-non-zts-
20020429”
,并在文件的末尾添加行扩展名= apc.so
(你还可以配置一些额外的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 |
在ISPConfig 3.0.5中,您可以在“ 系统”>“其他PHP版本”
下配置新的PHP版本
。 在“ 名称
”选项卡上,您只需填写PHP版本的名称(例如PHP 4.4.9
) - 这个PHP版本将在ISPConfig的网站设置中以此名称列出:
转到“ FastCGI设置”
选项卡(“ PHP-FPM设置”
选项卡可以保留为空),并填写如下所示的字段:
如果一切正常工作,您现在可以为ISPConfig中的网站选择PHP 4.4.9。 您可以通过使用phpinfo()
创建一个PHP文件来检查网站的PHP版本;
功能并在浏览器中调用该文件:
3链接
- PHP: http : //www.php.net/
- ISPConfig: http : //www.ispconfig.org/
- Ubuntu: http : //www.ubuntu.com/
关于作者
Falko Timme是所有者 Timme Hosting (超快nginx网页托管)。 他是youcl(自2005年以来)的主要维护者, 也是ISPConfig的核心开发人员之一 (自2000年起)。 他还为O'Reilly的“Linux系统管理”一书作出了贡献。