Доброе время суток! Прошу помощи у знатоков!
Ситуация следующая. Захотел поставить LAMP из исходников.
apache поставил - работает. Через браузер откликается.
mysql поставил - работает. Могу зайти, создать базу и т.д.php собрал с такими параметрами (в псоледний из разов):
./configure --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql/bin/mysql_config --with-mysqli=/usr/local/mysql/bin/mysql_config --prefix=/usr/local/apache/php --with-config-file-path=/etc --with-zlib --with-gettext
make
make install
cp -p .libs/libphp5.so /usr/local/apache/modules
cp -p php.ini-development /usr/local/apache/php/php.ini (recommended почему-то не оказалось)
перезапустил апач.
в каталог /var/www/htdocs/ положил файлик info.php c phpinfo();
И вот тут момент уже начался. Пишет что --without-mysql
Если к этому же файлу обратиться через php info.php , то там --with-mysql=shared,/usrВ общем что-то странное подумал я и продолжил. Создал файлик с таким кодом:
<body>
<?php
$db = mysql_connect('localhost', 'monty', 'testtest') or die ("no connect");
mysql_select_db('sss2',$db);$result = mysql_query('SELECT * FROM geography', $db);
$myrow = mysql_fetch_array($result);echo $myrow['country'];
echo 'Hello!';
?>
</body>Если к этому файлу обратиться через шел - php sss.php . То он показывает вывод из базы!!! И echo.
Если обратиться через браузер - пишет
Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13) in /var/www/html/sss2.php on line 9
no connectЧто проверил: mysql.sock есть. Права 777 на mysql.sock. mysqld в процессах есть, с ним все в порядке.
Попробовал в скрипте сменить localhost на 127.0.0.1, получаю
Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '127.0.0.1' (13) in /var/www/html/sss2.php on line 9
no connectПробовал играться с /etc/php.ini.
Поставил mysql.default_socket = /tmp/mysql.sock . Этим лишь добился такого пути в сокете, до этого это был /var/lib/mysql/mysql.sock
Поставил mysql.default_host = 127.0.0.1 - эффекта не дало.В общем прошу помощи, ибо голова уже кипит
>[оверквотинг удален]
> с ним все в порядке.
> Попробовал в скрипте сменить localhost на 127.0.0.1, получаю
> Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '127.0.0.1'
> (13) in /var/www/html/sss2.php on line 9
> no connect
> Пробовал играться с /etc/php.ini.
> Поставил mysql.default_socket = /tmp/mysql.sock . Этим лишь добился такого пути в сокете,
> до этого это был /var/lib/mysql/mysql.sock
> Поставил mysql.default_host = 127.0.0.1 - эффекта не дало.
> В общем прошу помощи, ибо голова уже кипит$ uname -a
$ sudo netstat -antup | grep 3306
$ mysql -u monty -p
> show databases;а зачем в линуксе собирать из исходников?
> $ uname -aLinux localhost.test2 2.6.32-131.0.15.el6.i686 #1 SMP Sat Nov 12 17:30:50 CST 2011 i686 i686 i386 GNU/Linux
> $ sudo netstat -antup | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1718/mysqld
> $ mysql -u monty -p
>> show databases;| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sss2 |
| test> а зачем в линуксе собирать из исходников?
хороший способ научиться чему-т на линуксе:) действует
>[оверквотинг удален]
> |
> +--------------------+
> | information_schema |
> | mysql
> |
> | performance_schema |
> | sss2
> |
> | test
>> а зачем в линуксе собирать из исходников?а где база testtest?
> хороший способ научиться чему-т на линуксе:) действует
нет не хороший.
>[оверквотинг удален]
>> | mysql
>> |
>> | performance_schema |
>> | sss2
>> |
>> | test
>>> а зачем в линуксе собирать из исходников?
> а где база testtest?
>> хороший способ научиться чему-т на линуксе:) действует
> нет не хороший.ах да... ещё:
cat /etc/apache2/mods-enabled/php5.load
> ах да... ещё:
> cat /etc/apache2/mods-enabled/php5.loadcat: /etc/apache2/mods-enabled/php5.load: No such file or directory
p.s. Забыл написать. Система CentOS
> а где база testtest?testtest - это пароль
mysql_connect([ string $server [, string $username [,string $password]]])
>> а где база testtest?
> testtest - это пароль
> mysql_connect([ string $server [, string $username [,string $password]]])видимо у вас не подключен модуль пхп....
у меня на серверах debian... но думаю не особо важно...
hp@local:~$ cat /etc/apache2/mods-enabled/php5.load
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so
> видимо у вас не подключен модуль пхп....
> у меня на серверах debian... но думаю не особо важно...
> hp@local:~$ cat /etc/apache2/mods-enabled/php5.load
> LoadModule php5_module /usr/lib/apache2/modules/libphp5.soСделал насколько уловил.
Добавил в конфиг апача /etc/httpd/conf/httpd.conf
строку LoadModule php5_module /usr/local/apache/modules/libphp5.soservice httpd restart
Stopping httpd: [ OK ]
Starting httpd: httpd: Syntax error on line 202 of /etc/httpd/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: failed to map segment from shared object: Permission denied
[FAILED]
>[оверквотинг удален]
> [ OK ]
> Starting httpd: httpd: Syntax error on line 202 of /etc/httpd/conf/httpd.conf: Cannot load
> /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so:
> failed to map segment from shared object: Permission denied
>
>
>
>
>
> [FAILED]sudo find / -name 'libphp5.so'
> sudo find / -name 'libphp5.so'/var/src/php-5.3.8/libs/libphp5.so
/var/src/php-5.3.8/.libs/libphp5.so
/usr/lib/httpd/modules/libphp5.so
/usr/local/apache/modules/libphp5.so
>> sudo find / -name 'libphp5.so'
> /var/src/php-5.3.8/libs/libphp5.so
> /var/src/php-5.3.8/.libs/libphp5.so
> /usr/lib/httpd/modules/libphp5.so
> /usr/local/apache/modules/libphp5.soИсправил строку LoadModule php5_module /usr/local/apache/modules/libphp5.so
на LoadModule php5_module /usr/lib/httpd/modules/libphp5.so
Starting httpd: [Tue Jan 10 21:57:35 2012] [warn] module php5_module is already loaded, skipping
[ OK ]
А в браузере все также mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '127.0.0.1'
>> sudo find / -name 'libphp5.so'
> /var/src/php-5.3.8/libs/libphp5.so
> /var/src/php-5.3.8/.libs/libphp5.so
> /usr/lib/httpd/modules/libphp5.so
> /usr/local/apache/modules/libphp5.soну попоробуйте прописать другие пути... типа /usr/lib/httpd/modules/libphp5.so
или пермишны посмотреть: ls -la /usr/local/apache/modules/
а вообще....
sudo apt-get install php5-mysqlдумаю в centos тоже самое yum install php5-mysql
>>> sudo find / -name 'libphp5.so'
>> /var/src/php-5.3.8/libs/libphp5.so
>> /var/src/php-5.3.8/.libs/libphp5.so
>> /usr/lib/httpd/modules/libphp5.so
>> /usr/local/apache/modules/libphp5.so
> ну попоробуйте прописать другие пути... типа /usr/lib/httpd/modules/libphp5.so
> или пермишны посмотреть: ls -la /usr/local/apache/modules/
> а вообще....
> sudo apt-get install php5-mysql
> думаю в centos тоже самое yum install php5-mysqlтак же может помочь tail -100 /var/log/apache2/error.log
>> а вообще....
>> sudo apt-get install php5-mysql
>> думаю в centos тоже самое yum install php5-mysqlЭто не спортивно:)
К тому же у меня подуль пхп подключен, иначе не работало бы
<?
echo "бла бла бла";
?>
А оно работает. У меня проблема именно с подключением mysql:(
>>> а вообще....
>>> sudo apt-get install php5-mysql
>>> думаю в centos тоже самое yum install php5-mysql
> Это не спортивно:)
> К тому же у меня подуль пхп подключен, иначе не работало бы
> <?
> echo "бла бла бла";
> ?>
> А оно работает. У меня проблема именно с подключением mysql:(мб проблема со сборкой php и его extension?!
почитайте как можно собрать php и наверняка многое проясниться
>[оверквотинг удален]
>>>> sudo apt-get install php5-mysql
>>>> думаю в centos тоже самое yum install php5-mysql
>> Это не спортивно:)
>> К тому же у меня подуль пхп подключен, иначе не работало бы
>> <?
>> echo "бла бла бла";
>> ?>
>> А оно работает. У меня проблема именно с подключением mysql:(
> мб проблема со сборкой php и его extension?!
> почитайте как можно собрать php и наверняка многое прояснитьсяЯ сегодня делал ровно по INSTALL для версии апача 2.* . И те же яйца, так сказать..:(
>[оверквотинг удален]
>>> Это не спортивно:)
>>> К тому же у меня подуль пхп подключен, иначе не работало бы
>>> <?
>>> echo "бла бла бла";
>>> ?>
>>> А оно работает. У меня проблема именно с подключением mysql:(
>> мб проблема со сборкой php и его extension?!
>> почитайте как можно собрать php и наверняка многое проясниться
> Я сегодня делал ровно по INSTALL для версии апача 2.* . И
> те же яйца, так сказать..:(php можно собрать несколькими вариантами! как cgi, как модуль к apache, и тд и тп
комбирнированно, статикой...
>[оверквотинг удален]
>>>> echo "бла бла бла";
>>>> ?>
>>>> А оно работает. У меня проблема именно с подключением mysql:(
>>> мб проблема со сборкой php и его extension?!
>>> почитайте как можно собрать php и наверняка многое проясниться
>> Я сегодня делал ровно по INSTALL для версии апача 2.* . И
>> те же яйца, так сказать..:(
> php можно собрать несколькими вариантами! как cgi, как модуль к apache, и
> тд и тп
> комбирнированно, статикой...Апач ставил так:
cd httpd-2.2.21
./configure --prefix=/usr/local/apache --enable-so--enable-cgi--enable-info--
enable-rewrite--enable-speling--enable-usertrack--enable-deflate --enable-ssl
--enable-mime-magic
make
make installphp пробовал ставить по разному, последний раз так:
cd /var/src/php-5.3.9
./configure --with-apxs2=/usr/local/apache/bin/apxs --with-mysql
make
make installВ /etc/httpd/conf/httpd.conf
Добавил
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch><FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>В /etc/httpd/conf.d/php.conf
Подключен модуль
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
</IfModule>Еще пробовал менять --with-config-file-path=/some/path , но все-равно через phpinfo показывает что /etc/php.ini
Пробовать показать --with-mysql=/usr/local/mysql . но все-равно через браузер phpinfo показывает что --without-mysql.
Да и вообще, чтобы я не менял, phpinfo ничего нового не показывает...
>[оверквотинг удален]
> В /etc/httpd/conf.d/php.conf
> Подключен модуль
> <IfModule prefork.c>
> LoadModule php5_module modules/libphp5.so
> </IfModule>
> Еще пробовал менять --with-config-file-path=/some/path , но все-равно через phpinfo показывает
> что /etc/php.ini
> Пробовать показать --with-mysql=/usr/local/mysql . но все-равно через браузер phpinfo
> показывает что --without-mysql.
> Да и вообще, чтобы я не менял, phpinfo ничего нового не показывает...можно увидеть вывод:
$sudo lsof -p `pidof apache2 | cut -d " " -f1` | grep sql
>>[оверквотинг удален]1) поставить вопрос: для чего нужно собирать LAMP из sources?
2) если решили собирать из sources то следует:a) читать документацию в этих sources
b) понимать процесс компиляции и сборки:
- как работает ./configure и: как и зачем использовать опции --options
в configure и проверять status и Makefile'ы что, как и откуда будет цепляться
при сборке: при динамической *.so или статической *.a
- разницу между статически собранным объектом и динамически
- порядок сборки необходимы для того или иного комплекта ПО
- и тд и тп3) если с верхним наступило просветление, решить:
- что вам нужно от php, те (то есть) что будет входить в комплект,
для чего это: это в случае если вы будете производить сборку для статики
- если динамическая сборка, то extention(модули) для php всегда можно собрать
и позже, если чего-то нехватиловывод:
- смотрим что у нас уже есть в системе: есть ли уже установленный mysql, gd, zlib
и тд и тп - все необходимое для сборки php
- если нет, доставляем, если есть - собираем php с учетом этого наличия и чтобы
не было конфликтов
Почему проверять наличие конфликтов, потому что после экспериментов, неопытные
администраторы оставляют кучу хлама в разных местах, от этого ./configure даже
с правильными параметрами может создать неверные Makefile'sК примеру у вас в системе уже несколько вариантов динамических модулей php...
Те после неудачных экспериментов лучше удалить ВСЕ что вы неудачно установили:
binaries, libraries & headers, иначе в системе будет каша и чем дальше, тем сложней
будет разбираться при ручной сборке.
Именно для этого служат rpm или srpm, не хочется ставить из пакетов - всегда есть
альтернатива собрать самому с требуемыми параметрами и конфигурацией из sources-rpm.
Для чего нужна универсальность - для того чтобы было проще сопровождать и разобраться
другому администратору.итог: продукт может быть собран статикой или динамикой (модульно), кроме того
php можно собрать как CLI (command line), CGI и DSO(модуль для apache),
например: php собрать cli+dso или cli+cgi
Вероятно вам нужно php cli+dso (cli + mod_php) + набор php-extension типа поддержка
mysql, gd, curl, xml и тд и тп.Избавьтесь от каши которую вы сотворили или попробуйте сделать сборку на чистой системе
под virtualbox например (так сказать "потренируйтесь на кошках") и потом смело разгребайте
на рабочей системе, найдите и удалите все ненужное или дублирующее или недо-удаленное,
освободитесь от каши и собирайте все последовательно:- apache с поддержкой dso
- сначала все что потребуется для php и расширений: mysql, gd, curl, openssl и тд и тп
(указанные расширения/extension лишь для примера)
- теперь php как cli + dso с правильными --with - необходимыми для ВАШЕЙ конфигурации
и соответствующие по путям установленному у вас ПОхоть что-то понятно из верхнего?
>[оверквотинг удален]
> на рабочей системе, найдите и удалите все ненужное или дублирующее или недо-удаленное,
> освободитесь от каши и собирайте все последовательно:
> - apache с поддержкой dso
> - сначала все что потребуется для php и расширений: mysql, gd, curl,
> openssl и тд и тп
> (указанные расширения/extension лишь для примера)
> - теперь php как cli + dso с правильными --with - необходимыми
> для ВАШЕЙ конфигурации
> и соответствующие по путям установленному у вас ПО
> хоть что-то понятно из верхнего?я лишь только добавлю для ТС.. В дистрибутивах основанных на пакетах не собирают и не ставят из сырцов.. Почему? потому что это идиотизм.
Хотите свою сборку апача? пхп? скачайте исходники и сделайте rpm.Это нормально. То что делаете вы - это не нормально.
А вот собирать на продакшн системе не обязательно. Можно собирать rpm на виртуалке, а потом инсталлить в прокашн )
>[оверквотинг удален]
>>> Это не спортивно:)
>>> К тому же у меня подуль пхп подключен, иначе не работало бы
>>> <?
>>> echo "бла бла бла";
>>> ?>
>>> А оно работает. У меня проблема именно с подключением mysql:(
>> мб проблема со сборкой php и его extension?!
>> почитайте как можно собрать php и наверняка многое проясниться
> Я сегодня делал ровно по INSTALL для версии апача 2.* . И
> те же яйца, так сказать..:(завтра подниму центось 5.7 на виртуалке и посмотрю )
2 TC
Хватит заниматься ерундой.# yum install php php-mysql
:D
Я разобрался с проблемой, точнее добрый человек помог мне с ней разобраться.Суть в том, что когда я устанавливаю систему, выбрал в компонентах установку apache.
Ну и понеслась..Я поставил еще один apache и, что и следовало ожидать, запутался в конфигах(кто куда смотрит), файлах запуска и т.д.Переставил систему, читал INSTALL и сделал все по новой. Заработало:)
Спасибо lavr'у и кегна за помощь, что не бросили в беде))
> Я разобрался с проблемой, точнее добрый человек помог мне с ней разобраться.
> Суть в том, что когда я устанавливаю систему, выбрал в компонентах установку
> apache.
> Ну и понеслась..Я поставил еще один apache и, что и следовало ожидать,
> запутался в конфигах(кто куда смотрит), файлах запуска и т.д.
> Переставил систему, читал INSTALL и сделал все по новой. Заработало:)
> Спасибо lavr'у и кегна за помощь, что не бросили в беде))Надеюсь собирали rpm, затем ставили как rpm -i xxxx.rpm ))