Cкомпіліровать php з вихідних - tech notes
Ця замітка розповість як можна встановити PHP останньої версії на свій сервер з вихідного коду, на прикладі PHP 5.5.10 + CentOS 6.5.
Для початку завантажуємо вихідний код з офіційного дзеркала. Я живу в Україні і для мене php.net запропонував вот такой вот список дзеркал.
Можна перейти за цим посиланням, і на основі Вашого місцезнаходження будуть запропоновані дзеркала, які знаходяться у Вашій країні.
Буду розглядати приклад установки 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
І відкрити його в браузері. Якщо все працює - побачите ось таку картинку:
(Visited 798 times, 1 visits today)