Cкомпіліровать php з вихідних - tech notes

Ця замітка розповість як можна встановити PHP останньої версії на свій сервер з вихідного коду, на прикладі PHP 5.5.10 + CentOS 6.5.

Для початку завантажуємо вихідний код з офіційного дзеркала. Я живу в Україні і для мене php.net запропонував вот такой вот список дзеркал.

Cкомпіліровать php з вихідних - tech notes

Можна перейти за цим посиланням, і на основі Вашого місцезнаходження будуть запропоновані дзеркала, які знаходяться у Вашій країні.

Буду розглядати приклад установки php v.5.5.10 на чистий сервер CentOS 6.5.

Отже завантажуємо і розпаковуємо:

Що б все вийшло нам потрібен C ++ компілятор.

На чистому сервері його немає, тому його потрібно встановити:

yum install gcc make

В принципі на цьому етапі конфигуратор запуститься і відвалиться з ось такою помилкою:

checking libxml2 install dir. no
checking for xml2-config path.
configure: error: xml2-config not found. Please check your libxml2 installation.

Потрібно доставити libxml:

yum install libxml2-devel

На цьому етапі configure скрипт виконується без помилок. Він знаходить що є в системі і з чим він може зібрати php. Не буду розписувати в подробицях опції, які включені за замовчуванням, скажу лише те, що з таким набором далеко не зайдеш. У цьому списку немає нічого що допомогло б нам запустити якийсь простенький сайтик.

Я буду збирати php c підтримкою наступних модулів:

Спочатку включимо Epel репозиторій:

Далі потрібно доставити потрібні пакети:

yum install mysql-devel httpd-devel gd-devel libmcrypt-devel mcrypt bison-devel mhash-devel libcurl-devel

Тепер можна і позбирати:

/ Configure --bindir = / usr / bin --with-config-file-path = / etc --with-curl --with-mhash --with-mysql --with-mysqli --with-gd --with -pdo-mysql --with-mcrypt --enable-mbstring --with-openssl --with-pcre-regex --enable-soap --with-apxs2 --with-zlib

трохи пояснень:
--bindir - шлях, куди зберегти бінарники
--with-config-file-path - шлях зберігання php.ini

За замовчуванням php складається в папку / usr / local.

make make install

В ході установки make повинен внести ось таку строчку в httpd.conf. Якщо цього не відбулося - зробіть це самі:
LoadModule php5_module /usr/lib/httpd/modules/libphp5.so

В папці з вихідним кодом надається 2 типу php.ini. Залежно від цілей, для яких використовується сервер, виконуємо одну з наступних команд:

cp php.ini-development /etc/php.ini

cp php.ini-production /etc/php.ini

Вчимо Apache працювати з php файлами:
nano /etc/httpd/conf.d/php.conf


SetHandler application / x-httpd-php

При рестарт Apache я отримав ось таку помилку:

Starting httpd: httpd: Syntax error on line 216 of /etc/httpd/conf/httpd.conf: Can not load /usr/lib/httpd/modules/libphp5.so into server: / usr / lib / httpd / modules / libphp5. so: can not restore segment prot after reloc: Permission denied

Це пов'язано з тим, що Selinux блокує додавання модулів в Apache. Тимчасово відключити SeLinux можна командою:

Для того що б на завжди відключити SeLinux, потрібно в файлі / etc / selinux / config
замінити:
SELINUX = enforcing
на
SELINUX = disabled

І відкрити його в браузері. Якщо все працює - побачите ось таку картинку:

Cкомпіліровать php з вихідних - tech notes

(Visited 798 times, 1 visits today)