Есть сайты которые требуют PHP5.3 а есть такие, на которых интерпретатор выдает кучу ошибок и приходится использовать старый 5.2, я понимаю, если вы держите на серваке один сайт, тогда можно его проапгрейдить и решить проблему модификацией своего скрипта, но вот если у вас сотни сайтов чужих на сервере, то я думаю вам будет лень править чужие скрипты, проще дать возможность запускать разные сайты с разным PHP.
Оригинал инструкции тут http://mbi-solutions.blogspot.com/2011/07/running-php-53-and-php-52-on-same.html, но я исправил кое какие ошибки и дополнил инструкцию
./configure --prefix=/opt/php5.2 \
--with-config-file-path=/opt/php5.2 --with-mysqli \
--with-pdo-mysql --with-mysql --with-curl \
--with-gd --with-jpeg-dir --with-xsl --with-zlib \
--enable-cli --enable-fastcgi --enable-discard-path \
--enable-force-cgi-redirect --with-iconv --with-gettext \
--with-curl --with-bz2 --enable-mbstring=all --enable-zip
после успешной установки создаем файл
/usr/lib/cgi-bin/php52-cgi
и вставляем в него такое содержимое
#!/bin/sh
PHPRC="/opt/php5.2/"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /opt/php5.2/bin/php-cgi
делаем его исполняемым
chmod +x /usr/lib/cgi-bin/php52-cgi
создаем файл /etc/apache2/php52.conf
и вставляем в него
<FilesMatch "\.php">
SetHandler application/x-httpd-php5
</FilesMatch>
ScriptAlias /php52-cgi /usr/lib/cgi-bin/php52-cgi
Action application/x-httpd-php5 /php52-cgi
AddHandler application/x-httpd-php5 .php
Теперь делаем финальные манипуляции с апачем
И перезагружаем апач
/etc/init.d/apache2 restart
Теперь можете добавлять в любой конфиг виртуалхоста строчку
Include php52.conf
но обратите внимание на директорию
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
если у вас такого не прописано в конфиге виртуалхоста, то пропишите, иначе будет ругаться на отсутствие доступа.
По аналогии можно подключить например php4 или php6 и адаптировать свою хостинг-панель для возможности выбора версии php.
Оригинал инструкции тут http://mbi-solutions.blogspot.com/2011/07/running-php-53-and-php-52-on-same.html, но я исправил кое какие ошибки и дополнил инструкцию
wget http://museum.php.net/php5/php-5.2.17.tar.gz
tar -zxvf php-5.2.17.tar.gz
apt-get install libxml2-dev libmysqlclient-dev libcurl4-gnutls-dev libpng12-dev libjpeg62-dev libxslt1-dev libbz2-dev
cd php-5.2.17
./configure --prefix=/opt/php5.2 \
--with-config-file-path=/opt/php5.2 --with-mysqli \
--with-pdo-mysql --with-mysql --with-curl \
--with-gd --with-jpeg-dir --with-xsl --with-zlib \
--enable-cli --enable-fastcgi --enable-discard-path \
--enable-force-cgi-redirect --with-iconv --with-gettext \
--with-curl --with-bz2 --enable-mbstring=all --enable-zip
make && make install
после успешной установки создаем файл
/usr/lib/cgi-bin/php52-cgi
и вставляем в него такое содержимое
#!/bin/sh
PHPRC="/opt/php5.2/"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /opt/php5.2/bin/php-cgi
делаем его исполняемым
chmod +x /usr/lib/cgi-bin/php52-cgi
создаем файл /etc/apache2/php52.conf
и вставляем в него
<FilesMatch "\.php">
SetHandler application/x-httpd-php5
</FilesMatch>
ScriptAlias /php52-cgi /usr/lib/cgi-bin/php52-cgi
Action application/x-httpd-php5 /php52-cgi
AddHandler application/x-httpd-php5 .php
Теперь делаем финальные манипуляции с апачем
apt-get install libapache2-mod-fastcgi
a2enmod cgi fastcgi actionsИ перезагружаем апач
/etc/init.d/apache2 restart
Теперь можете добавлять в любой конфиг виртуалхоста строчку
Include php52.conf
но обратите внимание на директорию
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
если у вас такого не прописано в конфиге виртуалхоста, то пропишите, иначе будет ругаться на отсутствие доступа.
По аналогии можно подключить например php4 или php6 и адаптировать свою хостинг-панель для возможности выбора версии php.
12 комментариев:
Спасибо за публикацию. В целом получилось, но мне не удалось задействовать расширения PHP(extentions), в частности fileinfo.so, данные сервера - Ubuntu, Apache, MYSQL, PHP. Что-нибудь посоветуете?
На данный момент я на сессии и нет времени на эксперименты, но могу вам дать путь к решению вашей проблемы, скорей всего расширения цепляются из папки для расширений 5.3, и не совместимы с 5.2
1. в php.ini укажите свою папку в параметре extension_dir
2. скомпилировать и закинуть в папку fileinfo.so
3. в php.ini подключить extension=fileinfo.so
вот инфа для размышлений
http://php.net/manual/ru/ref.fileinfo.php
http://serverfault.com/questions/50426/php-fileinfo-in-custom-php-build-linux
Если решите данную проблему, то отпишитесь в комментариях о способе решения, если не решите, то я попробую это сделать примерно через 3 недели.
В tar -jxvf mirror можно без v обходиться, как правило, чаще конфигурится удалённо по SSH — verbose-вывод забивает медленный канал.
/etc/init.d/apache2 restart
можно проще
apache2ctl restart
Там же, в apache2ctl, есть configtest, status и прочие нужности.
Ну да, вы правы про параметр v в таре, просто привычка такая, иногда долго что то распаковываю и непонятно что там происходит. А про медленный канал это уже прошлый век, сейчас сложно найти человека, у которого канал интернета менее 10 мегабит.
Расширения PHP работают. Причина была в неудачном апгрейде сервера, в частности PHP. Кто использует расширения надо обратить внимание на extension_dir, по умолчанию указывается несуществующая папка, я прописал в php.ini Если используется графическое расширение freetype, можно скомпилировать 5.2.11 версию - есть в сборке, нужно только указать в configure.
Спасибо за то что отписались, думаю что ваш комментарий поможет другим людям, которые столкнутся с данной проблемой
танцы с бубном (((
configure: error: libjpeg.(a|so) not found.
при чем
apt-get install libjpeg62-dev
Уже установлена самая новая версия libjpeg62-dev
ls -l /usr/lib |grep libjpeg
-rw-r--r-- 1 root root 217K Июн 30 2010 libjpeg.a
-rw-r--r-- 1 root root 918 Июн 30 2010 libjpeg.la
lrwxrwxrwx 1 root root 17 Фев 3 09:08 libjpeg.so -> libjpeg.so.62.0.0
lrwxrwxrwx 1 root root 17 Авг 8 2011 libjpeg.so.62 -> libjpeg.so.62.0.0
-rw-r--r-- 1 root root 142K Июн 30 2010 libjpeg.so.62.0.0
Обратите внимание на то какие файлы есть в папке /usr/lib и какие симлинки там есть, если чего то нет, то это уже повод для размышлений
если не поможет, то
--with-jpeg-dir=/usr/lib
Огромный сенкс, помогло.
кстати таже песня была с libpng
кроме этого рекомендую добавить --enable-mbstring=all
А вы мою статью внимательно читали?
--with-curl --with-bz2 --enable-mbstring=all --enable-zip
я это описывал)))
Спасибо за статью, пригодилось.
В статье лишний пробел в
"./configure --prefix=/opt/php5.2 \ "
Можете еще один добавить и он тоже лишним не станет, между параметрами допускается
Отправить комментарий