Установка php5 c портов на FreeBSD для веб-сервера apache

Статья посвящена установке PHP5 на FreeBSD и настройке, чтобы можно было создавать странички на php.

1. Запускаю конфигурацию перед установкой php:

# cd /usr/ports/lang/php5
# make clean
# make configure

Настройки следующие:

Запускаем установку:

# make install clean

2. Далее устанавливаем с портов дополнительные модули для php:

# cd /usr/ports/lang/php5-extensions/
# make clean
# make configure

В настройках обязательно включить поддержку следующих модулей:

DOM
GD
ICONV
MBSTRING
MYSQL
SESSION
XML
ZLIB

Теперь выполняем непосредственно установку

# make install clean

Вызвав еще раз make configure видим список установленных модулей:

# make configure
===> Vulnerability check disabled, database not found
===> Found saved configuration for php5-extensions-1.1
===> Extracting for php5-extensions-1.1
===> Patching for php5-extensions-1.1
===> php5-extensions-1.1 depends on file: /usr/local/include/php/main/php.h - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/ctype.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/dom.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/filter.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/gd.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/hash.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/iconv.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/json.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/mbstring.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/mysql.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/pcre.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/pdo.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/pdo_sqlite.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/posix.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/session.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/simplexml.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/spl.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/sqlite.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/tokenizer.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/xml.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/xmlreader.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/xmlwriter.so - found
===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/zlib.so - found
===> Configuring for php5-extensions-1.1
#

3. Подключаем php к apache. Для того чтобы php подцепился к Httpd серверу останавливаем его (останавливаю apache):

# /usr/local/etc/rc.d/apache22 stop

Проверяю в процессах , что он остановлен

# ps -ax|grep httpd

Проверяю файл httpd.conf:

# less /usr/local/etc/apache22/httpd.conf

Там идет длинный список из LoadModule ищем строчку посвященную php5 - эта строчка после установки php5 появилась в нем сама:

LoadModule php5_module libexec/apache22/libphp5.so

4. Подключаем обработку php только для тех сайтов, в которых он будет использоваться, к примеру, :

# vi /usr/local/etc/apache22/Includes/virtual.conf

В этом файле можно настроить папки с сайтами - виртуальные хосты на одном сервере.
К примеру так :

<VirtualHost *:80>
ServerName 192.168.18.55
DocumentRoot /usr/local/www/apache22/data/howtoes
ErrorLog /var/log/httpd_howtoes.log
<IfModule dir_module>
DirectoryIndex index.html index.htm
</IfModule>
#Вот этот кусок вставляем чтобы этот сайт(директория) обрабатывал PHP 5
<IfModule php5_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
</VirtualHost>

5. Теперь делаем проверку заработают ли странички php на нашем сервере.
Создаю следующий php пример в папке на которую настроен апач:

# cat /usr/local/www/apache22/data/howtoes/1.php

<?php
$pic=imagecreate(350,100);
$piccolor=imagecolorallocate($pic, 255,255,255);
$textcolor=imagecolorallocate($pic, 0,0,0);
$linecolor=imagecolorallocate($pic, 0,0,255);
$text="GD test successful - gdtest.php!";
imagerectangle($pic, 1,99, 349,0, $linecolor);
imagestring($pic,5,30,40, $text, $textcolor);
header("content-type: image/png");
imagepng($pic);
imagedestroy($pic);
?>

6. Проверяем корректно ли мы задали конфиги для апач:

# apachectl configtest
Syntax OK

Теперь рестартуем apache22

# /usr/local/etc/rc.d/apache22 restart

Теперь проверяем работоспособность нашего сервера с поддержкой php страничек:

7. Настраиваем php.ini (этот пункт по желанию, может кого-то устраивают и настройки по-умолчанию)

Сначала просто копируем php.ini :

# cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini

Теперь правим строки( цифры – это номера строк):
Чтобы выводились только ошибки:

362 error_reporting = E_ALL & ~E_NOTICE

Чтобы выводились ошибки в браузер:

381 display_errors = On

Регистрирование переменных PHP:

462 variables_order = "EGPCS"

Отключение автоматической обработки кавычек ,к примеру, необходимо для корректной работы Joomla:

499 magic_quotes_gpc = On

Разрешение на загрузку файлов:

599 file_uploads = On

Делаем временную папку для закаченных файлов

603 upload_tmp_dir = /tmp

Настраиваем максимальный размер закачиваемого файла:

606 upload_max_filesize = 5M

Указываем порт на котором слушает Mysql:

815 mysql.default_port = 3306

Указываем хост по умолчанию

822 mysql.default_host = localhost

Хранить файлы сессии:

1022 session.save_handler = files

Указываем путь в котором сохранять файлы сессии:

1050 session.save_path = "/tmp/session"

Чтобы ID сессии добавлялись ко всем ссылкам на странице автоматически

1143 session.use_trans_sid = 1

Перезапускаем apache22 и пробуем 1.php снова