PHP и MySQL на разных серверах

MaxiStyle

Новичок
PHP и MySQL на разных серверах

Господа поделитесь опытом создания связки PHP (5) и MySQL (5.0) на разных серверах.
Нашел доки:
http://dev.mysql.com/downloads/connector/php-mysqlnd/

делаю как там написан, качаю сурс клиента, заменяю в mysqli, запускаю в php buildconf, configure - все номально, во время компиляции вылетает ошибка:
make: *** No rule to make target `/home/max/INSTALL/php-5.2.8/ext/mysqli/libgd/gd.c', needed by `ext/mysqli/libgd/gd.lo'. Stop.
и компиляция останавливается.
 

Angerslave

Новичок
Что мешает вместо localhost'а при вызове mysql_connect прописать другой адрес?
 

x-yuri

Новичок
откуда ты брал ext/mysqli и как в этой папке оказалось libgd?

-~{}~ 12.01.09 10:03:

да тебе кстати надо приконнектится на др сервер или скомпилировать mysqlnd?
 

MaxiStyle

Новичок
2 Angerslave:
я имел в виду установку php, а не его использование

2 x-yuri:
libgb там нет. На http://lists.mysql.com/php/45 написано, что у mysqlnd конфликт с gd. И действительно, без gb компилится нормально, а вот с gd никак. Используя инструкции по той же ссылки как это обойти тоже ничего не выходит, компилятор пишет: [ext/mysql/php_mysql.lo] Error 1
Да, мне надо скомпилить mysqlnd.
 

derickru

Новичок
Это проблема при установке php.
Кажется она никак не относится к тому, что php и mysql на разных серверах.
php должен ставится также как он ставится обычно просто с поддержкой mysql.
mysql ставится просто на другом сервере.
А в скриптах уже идет коннект к бд на этом сервере.
Что-то намудрили наверно при конфигурации php.

ЗЫ: зачем вам понадобился именно mysqlnd?
 

x-yuri

Новичок
там дело в том, что кто-то требует libgd. В папке mysqlnd эта библиотека не должна быть и mysqlnd ее не требует. Но проблема не только у MaxiStyle (http://lists.mysql.com/php/44). В общем странно как-то. Непонятно, кто ее требует, по-крайней в той папке

MaxiStyle а при компиляции расширение gd должно компилироваться?
 

MaxiStyle

Новичок
2 derickru: вы не правы. Если вы хоть раз ставили php 5 на Linux, то должны знать, что php конфигурится с параметром
--with-mysql=[DIR], где DIR путь до mysql. А без DIR php 5 не сконфигурируется.


2 x-yuri:
./configure --with-apxs2=/usr/local/apache/KC/bin/apxs --with-gd --with-mysqli --enable-mysqlnd

после этого в makefile нахожу строки:
ext/mysqli/libgd/gd.lo ext/mysqli/libgd/gd_gd.lo ext/mysqli/libgd/gd_gd2.lo и т.д.
похоже при конфигурирование просходит путаница путей...
 

x-yuri

Новичок
если не включать enable-mysqlnd libgd в Makefile появляется?

-~{}~ 13.01.09 01:35:

libgd есть в config.w32 или config9.m4?
 

MaxiStyle

Новичок
без enable-mysqlnd конфигурирование не идет:
configure: error: wrong mysql library version or lib not found. Check config.log for more information.

libgd нет ни в config.w32 ни config9.m4, есть только в makefile
 

x-yuri

Новичок
не заметил, что у тебя --with-gd
попробуй
./configure --with-apxs2=/usr/local/apache/KC/bin/apxs --with-gd
и
./configure --with-apxs2=/usr/local/apache/KC/bin/apxs --with-mysqli --enable-mysqlnd
и сообщи о результатах. Похоже на то, что действительно какая-то путаница с путями
 

x-yuri

Новичок
достоверно сказать можно только одно: Makefile некорректно сгенерировался. А у тебя в ext/mysqli находится каталог libgd? а если его оттуда убрать? его же там изначально быть не должно было

-~{}~ 13.01.09 04:21:

make: *** No rule to make target `/home/max/INSTALL/php-5.2.8/ext/mysqli/libgd/gd.c', needed by `ext/mysqli/libgd/gd.lo'. Stop.
да, это сообщение говорит, что make непонятно как создать `/home/max/INSTALL/php-5.2.8/ext/mysqli/libgd/gd.c', от которого зависит `ext/mysqli/libgd/gd.lo'
но файла `/home/max/INSTALL/php-5.2.8/ext/mysqli/libgd/gd.c' не существует и создаваться он не должен. Можно попробовать скопировать в ext/mysqli папку ext/gd/libgd. Не факт, что заработает и лучше было бы разобраться почему там ищется вторая копия libgd (в ext/mysqli)

-~{}~ 13.01.09 04:33:

самое интересное, что ext/mysqli/libgd/gd.lo должно быть создано в обоих случаях. Но ошибка возникает только во втором

-~{}~ 13.01.09 04:35:

еще можешь в Makefile попробовать убрать зависимости от чего-либо из папки ext/mysqli/libgd, хотя, повторюсь, стоит разобраться в чем причина
 

MaxiStyle

Новичок
1. libgd в том катологе не было
2. http://bugs.php.net/bug.php?id=45726 вроде как упоминается о баге в php 5.3, но у меня-то 5.2.8...
3. попробовал туда скопировать ее - не помогло, компилятор ошибку выдает [libphp5.la] Error 1

В общем я решил на тот сервак ставить mysql, потом установить php и удалить mysql... более удачных вариантов не вижу...
 

x-yuri

Новичок
http://bugs.php.net/bug.php?id=45726 - непонятно как этот баг связан с твоей проблемой

В общем я решил на тот сервак ставить mysql, потом установить php и удалить mysql... более удачных вариантов не вижу...
ну попробуй

-~{}~ 13.01.09 05:21:

покажи кстати еще configure для случая mysql+gd
 

derickru

Новичок
MaxiStyle
да, устанавливал. Да, ты прав, просто не подумал, что там где ставится php совсем нет mysql :)

а если указать при установке php явный путь для библиотеки gd?
 

MaxiStyle

Новичок
2 x-yuri:
вариант с установкой mysql не прокатил, т.к. клиент mysql требует mysql.soket, а значить сервак mysql должен быть всегда запущен...

2 derickru:
попробовал, не помогло, все равно пути путает...
No rule to make target `/home/max/INSTALL/php-5.2.8/ext/mysqli/gdcache.c', needed by `ext/mysqli/gdcache.lo'. Stop.

Нашел на mysql.com клиент в rpm, попробую с ним еще поковырятся...
 

x-yuri

Новичок
покажи кстати еще configure для случая mysql+gd
пробовал Makefile подправить?

mysqlnd ты устанавливаешь, потому что для того чтобы скомпилировать mysqli нужен установленный и работающий mysql? Странно, мне кажется это не должно быть обязательным условием
 
Сверху