Статья посвящена установке 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 снова