Консультация № 171519
21.08.2009, 22:06
0.00 руб.
0 10 2
Поставил FreeBSD 7.2 , из пакетов установил Apache22 и PHP5 - 5.2.9. Не могу открыть в браузере простейший .php файл , она предлагает его скопировать , просит указать место. Настройка включала следующие шаги:
1. создал файл php.ini
cp php.ini-dist php.ini
2.
#Внутри блока <IfModule mod_mime.c>:
AddType application/x-httpd-php .php
#В строке DirectoryIndex пропишите:
DirectoryIndex index.php index.html

Пробовал добавить строку -
LoadModule php5_module libexec/apache2/libphp5.so
но не нашел файла libphp5.so.

Может кто подскажет - что нужно еще сделать и вообще может ссылочка по установке связки apache, PHP5 and MySQL?
Мне пока не удалось найти удовлетворительный источник. Нужно ли устанавливать php5_extensions?
Спасибо!


Обсуждение

Неизвестный
22.08.2009, 00:04
общий
это ответ
Здравствуйте, Анатолий Терентьев.

Скорее всего, вы собрали php5 без модуля для apache2
Перейдите в каталог порта php5
cd /usr/ports/lang/php5
make config
там нужно отметить модуль для apache2
потом
make build
make install

Неизвестный
22.08.2009, 01:00
общий
Добрый вечер Анатолий
php5_extensions установите также ...
Неизвестный
22.08.2009, 08:49
общий
Duke:
Добрый день! Спасибо за внимание к моей проблеме. К сожалению вопрос пока не решился.
Я сделал -
cd /usr/ports/lang/php5
make config
Отметил модуль для apache, т.к. строки для apache2 не было
потом
make build
make install
Потом установил php5-extensions , сделал рестарт apache , но результат пока прежний. При попытке
открыть index.php - файл всплывает окошко с предложением его скачать и сохранить на компе.
Содержимое Index.php , на всякий случай
<?php
echo "hello world" ;
?>
index.html - нормально отображает 'It works!'
Прочитал в http://www.phpworld.ru/php/phpinstallation.php рекомендацию -
Касаемо php5 в нем должны присутствовать следующие строки:
1.
LoadModule php5_module libexec/apache2/libphp5.so
Но в настоящий момент файл libphp5.so присутствует только в каталоге
/usr/ports/lang/php5/work/php5-5.2.9/.libs

И еще не совсем ясно, если php5 устанавливался из пакета вместе с apache22 зачем нужна повторная переустановка из порта.
Вроде должен быть какой-то другой путь настройки?
Спасибо!
Неизвестный
22.08.2009, 09:59
общий
Анатолий Терентьев:
у вас действительно интеграции в апач не происходит.
я обычно применяю для установки портов portupgrade, но это не суть.

почитайте http://www.lissyara.su/?id=1461 и http://www.lissyara.su/?id=1360
не всё конечно же вам нужно, но там описана последовательность.

и опять же не уверен нужно ли, но удалите пхп и поглядите не остался ли /var/db/ports/php5/options .
если что прибейте и 0-ля ставьте пхп.
Неизвестный
22.08.2009, 10:20
общий
Простейший способ проверить работу пхп - создать файл в директории апача такого содержания

<? phpinfo(); ?>

extensions понадобятся как минимум для поддержки mysql.
LoadModule php5_module libexec/apache2/libphp5.so нужна обязательно
не забываете ли перезапускать апач после внесения изменений в php.ini и httpd.conf?
Неизвестный
22.08.2009, 10:53
общий
это ответ
Здравствуйте, Анатолий Терентьев.

Для работы php необходимо собрать php c модулем для apache и в httpd.conf прописать строчку:
LoadModule php5_module libexec/apache22/libphp5.so
(возможно Вы одну двойку не дописали)
Если в httpd.conf строчка:
ServerRoot "/usr/local"
значит файл libphp5.so следует искать в:
/usr/local/libexec/apache22/
(по умолчанию он кладется туда). Если значение ServerRoot меняли, тогда нужно скопировать этот файл в папку по соответствующему пути. Чтобы убедиться, что этот файл присутствует, введите команду:
find / -name libphp5.so
Должен выдать что-то вроде:
/usr/local/libexec/apache22/libphp5.so

Неизвестный
22.08.2009, 11:24
общий
Анатолий Терентьев:
Может попробовать добавить еще такую строчку:

AddHandler application/x-httpd-php .php .htm .html .phtml
Неизвестный
22.08.2009, 12:20
общий
Cyrulnik:
Вот это даааа!!!
Цитата: 297311
AddHandler application/x-httpd-php .php .htm .html .phtml

И все заработало.
Остались правда вопросики.
1. Почему libphp5.so не появилось само там , где ему положено в директории /usr/local/libexec/apache22?
Я его скопировал из директории /usr/ports/lang/php5/work/php-5.2.9/.libs.
Нашел его командой find /usr/ -name libphp5.so , ессно.

После того, как php- страница стала отображаться правильно, я переименовал этот файл - и страничка перестала отображаться.
Т.е. этот файл нужен. (когда восстановил, страничка снова стала отображаться нормально).
2. Как проверить , что библиотека GD установилась. Когда установливал Php-extensions я , ессно , указал поддержку GD. Не уверен достаточно ли это.
3. ServerRoot "/usr/local" я не менял. При этом какие-то сомнения одолевают по директориям.
httpd.conf находится в /usr/local/etc/apache22
php.ini-dist в
httpd.conf находится в /usr/local/etc/
apachectl в
httpd.conf находится в /usr/local/sbin/
файлы документов в
httpd.conf находится в /usr/local/www/apache22/data
Хотя скорей всего так и нужно.
4. Повторюсь , т.к. хотелось бы понять. Я указал установку Apache22 и php5 из пакетов в sysinstall. Apache22 установился однозначно. Только
в inetd.conf расскоментировал соответствующую строчку и в /etc/rc.conf поставил
Apache22_enable="YES"
inetd_enable= "YES".
А связка apache - PHP5 не установилась, да и вообще пришлось конфиг php5 менять, как было рекомендовано на этом мини-форуме и устанавливать
из порта. Что-то здесь нелогично ...
Значит ли это , что php из пакета устанавливать бесполезно, лучше сразу из порта?
5. По ходу вопрос. Пробую через telnet заходить скажем в sysinstall или еще куда (ессно после команды su). И не понимаю как там по менюшкам
перемещаться - обычные стрелки на клавиатуре ноута , с которого вхожу, не приводят к перемещениям.
6. Правильно ли я понимаю, что если я под windows установлю ssh, то смогу через него заходить под рутом сразу? и под рутом только через ssh?
Ессно, когда разберусь, отпишу здесь, если раньше из ответов не будет ясно что-либо.
Спасибо , ребята , всем!!!
Неизвестный
22.08.2009, 12:49
общий
Анатолий Терентьев:
Попробую ответить на вопросы по порядку:
1. я apache2 и php ставлю из портов - и обычно он оказывается там где нужно, один раз правда его там действительно не оказалось - пришлось просто пересобрать еще раз php. То что он нужен - однозначно.
2. проверить можно очень просто - тут уже рекомендовали простенький html файл сделать- <? phpinfo(); ?> подсунуть апачу и потом открыть в браузере - там будет информация о том, какие библиотеки подлкючены к апачу.
3. так и нужно
4. скорее всего пакет для php был собран без поддержки апача. а ставить все лучше из портов .
5. через telnet вообще заходить не стоит, тем более что в freebsd ssh сервер ставится сразу при установке, нужно только в rc.conf указать sshd_enable="YES"
6. нет не сможете - freebsd запрещает входить под рутом с удаленных консолей. это конечно можно поменять, вот только стоит ли? я даже на линуксовых машинах ставлю такие же ограничения, хотя там по умолчанию можно входить по ssh рутом. для получения рутовых привилегий ествественно su или sudo (как больше нравится).

параллельно возник вопросик: а зачем в данном случае inetd? имхо апач сам неплохо слушает порты, а так дополнительная прослойка получается.
Неизвестный
22.08.2009, 21:22
общий
Cyrulnik:
1. inetd - просто трудности роста. Хочется на первый раз все побыстрей пройти, случайно получилось. Тем более время поджимает. Бросил работу, год ушел на повышение образования, деньги кончились, рассчитывал в инете зарабатывать, но пока, видимо , слаб еще - бросил взгляд на задачи фрилансеров. Сейчас задача - Social Engine поставить на свой сервер. А потом уже свой сайт делать, есть идеи.
2. phpinfo() ессно сразу попробовал и все , что нужно увидел.
Форма ответа