GNU/Linux >> Linux Esercitazione >  >> Panels >> Panels

Come utilizzare PHP 4.4.9 (FastCGI) con Apache e ISPConfig 3 (Debian Wheezy)

Come utilizzare PHP 4.4.9 (FastCGI) con Apache e ISPConfig 3 (Debian Wheezy)

A partire da ISPConfig 3.0.5, è possibile utilizzare più versioni PHP su un server e selezionare la versione PHP ottimale per un sito web. Se hai dei siti web molto vecchi sul tuo server, potrebbero non funzionare con PHP5, ma solo con PHP4. Questo tutorial mostra come costruire PHP 4.4.9 come versione FastCGI da utilizzare con Apache2 su un server Debian Wheezy. Questa versione PHP può essere utilizzata insieme al PHP predefinito (installato tramite apt) in ISPConfig.

Non garantisco che questo funzionerà per te!

1 Nota preliminare

PHP-FPM non è disponibile per PHP4, quindi descrivo solo come creare una versione FastCGI di PHP4. FastCGI è disponibile solo per i server Apache, quindi non puoi usarlo con nginx..

2 Creazione di PHP 4.4.9 (FastCGI)

Installa i prerequisiti per creare dal codice sorgente:

apt-get install build-essential

PHP 4.4.9 non verrà compilato con le versioni OpenSSL moderne, quindi è necessario installare prima una versione OpenSSL precedente (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

Scarica ed estrai 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/

Crea alcuni collegamenti simbolici necessari:

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

Successivamente dobbiamo disabilitare le funzioni mysql_drop_db e mysql_create_db perché altrimenti otterrai questi errori quando proverai a compilare PHP 4.4.9:

errore:riferimento non definito a 'mysql_drop_db'
errore:riferimento non definito a 'mysql_create_db'

Apri /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

... e vai alla riga 1131. Da lì in poi, commenta entrambe le funzioni:

[...]
/*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;
        }
}*/
/* }}} */
[...]

Installa i prerequisiti per la creazione di PHP5 (nel nostro caso questo copre anche i prerequisiti per la creazione di PHP4):

apt-get build-dep php5

Configura e compila PHP 4.4.9 come segue (puoi adattare il comando ./configure alle tue esigenze, dai un'occhiata a

./configure --help

per vedere tutte le opzioni disponibili; se utilizzi un comando ./configure diverso, è possibile che siano necessarie librerie aggiuntive o il processo di compilazione non riuscirà):

./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 \
--con-kerberos \
--con- gettext \
--with-expat-dir=/usr \
--enable-fastcgi

L'ultima opzione (--enable-fastcgi) assicura che questa versione PHP funzioni con FastCGI.

make
make install

Copia php.ini nella posizione corretta:

cp /usr/local/src/php4-build/php-4.4.9/php.ini-recommended /opt/phpfcgi-4.4.9/lib/php.ini

Ecco fatto:ora aggiungeremo il modulo APC alla nostra installazione di 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

Successivamente, apri /opt/phpfcgi-4.4.9/lib/php.ini...

vi /opt/phpfcgi-4.4.9/lib/php.ini

... e imposta extension_dir ="/opt/phpfcgi-4.4.9/lib/php/extensions/no-debug-non-zts-20020429" e aggiungi la riga extension=apc.so alla fine del file (tu può anche configurare alcune impostazioni APC aggiuntive):

[...]
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

In ISPConfig 3.0.5, puoi configurare la nuova versione PHP in Sistema> Versioni PHP aggiuntive. Nella scheda Nome, inserisci semplicemente un nome per la versione PHP (ad es. PHP 4.4.9) - questa versione PHP sarà elencata con questo nome nelle impostazioni del sito Web in ISPConfig:

Vai alla scheda Impostazioni FastCGI (la scheda Impostazioni PHP-FPM può essere lasciata vuota) e compila i campi come segue:

Se tutto funziona come previsto, ora puoi scegliere PHP 4.4.9 per un sito Web in ISPConfig. Puoi controllare la versione PHP di un sito web creando un file PHP con phpinfo(); funzione al suo interno e chiamando quel file nel tuo browser:

  • PHP:http://www.php.net/
  • Configurazione ISP:http://www.ispconfig.org/
  • Ubuntu:http://www.ubuntu.com/

Informazioni sull'autore

Falko Timme è il proprietario di Timme Hosting (hosting web nginx ultra veloce). È il principale manutentore di HowtoForge (dal 2005) e uno degli sviluppatori principali di ISPConfig (dal 2000). Ha anche contribuito al libro di O'Reilly "Linux System Administration".


Panels
  1. Come costruire PHP 5.6 (PHP-FPM e FastCGI) con Zend OPcache e APCu per ISPConfig 3 su Debian 7 (Wheezy)

  2. Come configurare Opencart con LAMP (PHP, Apache, Mariadb) su Debian 11

  3. Come ottenere Apache per utilizzare PHP 7.0 (non 7.1)?

  4. Annunci forzati su ISPConfig con Debian Etch

  5. Come usare EasyApache 3 con WHM/cPanel

Come utilizzare più versioni di PHP (PHP-FPM e FastCGI) con ISPConfig 3 (Ubuntu 13.04)

Come utilizzare più versioni di PHP (PHP-FPM e FastCGI) con ISPConfig 3 (Ubuntu 12.10)

Come utilizzare più versioni di PHP (PHP-FPM e FastCGI) con ISPConfig 3 (CentOS 6.3)

Come utilizzare più versioni di PHP (PHP-FPM e FastCGI) con ISPConfig 3 (Ubuntu 12.04 LTS)

Come costruire PHP 5.5 (PHP-FPM e FastCGI) con ionCube Loader, Zend OPcache e APCu per ISPConfig 3 (Debian Wheezy)

Come utilizzare più versioni di PHP (PHP-FPM e FastCGI) con ISPConfig 3 (Debian Wheezy)