проверьте воспроизведение бага при сборке php, plz

grigori

( ͡° ͜ʖ ͡°)
Команда форума
http://bugs.php.net/bug.php?id=54644

В моем последнем комменте последовательность консольных команд, для сборки расширения pdo_mysql c mysqlnd.
$ tar -xjf php-5.3.6.tar.bz2
$ cd php-5.3.6/ext/mysqli/
$ phpize;./configure --with-pdo-mysql=mysqlnd;make
...
In file included from /usr/src/web/php-5.3.6/ext/pdo_mysql/pdo_mysql.c:32:
/usr/src/web/php-5.3.6/ext/pdo_mysql/php_pdo_mysql_int.h:28:38: error:
ext/mysql/mysql_mysqlnd.h: No such file or directory
make: *** [pdo_mysql.lo] Error 1
Можете проверить, выдаст ли вам gcc эту же ошибку?

johannes задает мне кучу наводящих вопросов, у меня закралось подозрение, вдруг это только у меня не собирается.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
конфигур как-то лево напиван, я собираю обычно с --with-pdo-mysql --with-mysql=/usr/bin/ и все, все пашет.
 

tony2001

TeaM PHPClub
Йоханнес всё верно говорит.
этот хидер уже должен быть у тебя в системе, поэтому там и путь такой - ext/mysqlnd/mysqlnd.h
он у тебя в системе есть? где? phpize от той же версии PHP? а php-config?
в выводе `php-config --includes` этот путь должен присутствовать (что-то типа -I/usr/local/include/php).
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
я понимаю, что он по делу спрашивает
в системе один phpize и он той же версии - я пересобрал уже php заново
[root@devel php-5.3.6]# whereis phpize
phpize: /usr/local/bin/phpize

[root@devel php-5.3.6]# phpize -v
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626

[root@devel php-5.3.6]# locate mysqlnd.h
/usr/local/include/php/ext/mysqlnd/mysqlnd.h
/usr/local/include/php/ext/mysqlnd/php_mysqlnd.h
/usr/src/web/php-5.3.6/ext/mysql/mysql_mysqlnd.h
/usr/src/web/php-5.3.6/ext/mysqli/mysqli_mysqlnd.h
/usr/src/web/php-5.3.6/ext/mysqlnd/mysqlnd.h
/usr/src/web/php-5.3.6/ext/mysqlnd/php_mysqlnd.h

[root@devel php-5.3.6]# ll /usr/local/include/php/ext/mysqlnd/mysqlnd.h
-rw-r--r-- 1 root root 17088 2011-05-02 20:49 /usr/local/include/php/ext/mysqlnd/mysqlnd.h

[root@devel php-5.3.6]# php-config --includes
-I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib

все остальные расширения собираются нормально
 

tony2001

TeaM PHPClub
покажи всю строку с ошибкой.
которая начинается с gcc ... и перечисляет все -I и др.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
[root@devel pdo_mysql]# make
/bin/sh /usr/src/web/php-5.3.6/ext/pdo_mysql/libtool --mode=compile cc -I/usr/local/include/php/ext -I -I. -I/usr/src/web/php-5.3.6/ext/pdo_mysql -DPHP_ATOM_INC -I/usr/src/web/php-5.3.6/ext/pdo_mysql/include -I/usr/src/web/php-5.3.6/ext/pdo_mysql/main -I/usr/src/web/php-5.3.6/ext/pdo_mysql -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O0 -c /usr/src/web/php-5.3.6/ext/pdo_mysql/pdo_mysql.c -o pdo_mysql.lo
mkdir .libs
cc -I/usr/local/include/php/ext -I -I. -I/usr/src/web/php-5.3.6/ext/pdo_mysql -DPHP_ATOM_INC -I/usr/src/web/php-5.3.6/ext/pdo_mysql/include -I/usr/src/web/php-5.3.6/ext/pdo_mysql/main -I/usr/src/web/php-5.3.6/ext/pdo_mysql -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O0 -c /usr/src/web/php-5.3.6/ext/pdo_mysql/pdo_mysql.c -fPIC -DPIC -o .libs/pdo_mysql.o
In file included from /usr/src/web/php-5.3.6/ext/pdo_mysql/pdo_mysql.c:32:
/usr/src/web/php-5.3.6/ext/pdo_mysql/php_pdo_mysql_int.h:28:38: error: ext/mysql/mysql_mysqlnd.h: No such file or directory
make: *** [pdo_mysql.lo] Error 1
[root@devel pdo_mysql]#
>которая начинается с gcc ...
сс у меня симлинк на gcc (4.1.2)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ну да, есть файл
/usr/local/include/php/ext/mysqlnd/mysqlnd.h
а он ищет
ext/mysql/mysql_mysqlnd.h

когда собирается от корня пакета, gcc находит его в исходниках ext/mysql (а не в ext/mysqlnd), и никуда ни в какой /usr/local/include/php/ext/XXX этот файл при установке не копируется


почему хидер для mysqlnd ищут в ext/mysql, когда есть ext/mysqlnd? ну, хз, не мое дело
в mysqli используются именно они:
#include "ext/mysqlnd/mysqlnd_libmysql_compat.h"
#include "ext/mysqlnd/mysqlnd_portability.h"

в mysql
#include "ext/mysqlnd/mysqlnd.h"
и этот наш
php_mysql_structs.h:#include "mysql_mysqlnd.h" :)

т.е. авторы pdo_mysql не стали заморачиваться, а просто заинклюдили файл из соседнего расширения, не думая, что для mysql это файл всегда локальный, а для pdo_mysql он будет недоступен.

Еще нужны доказательства, что это ошибка разработчика?
 

tony2001

TeaM PHPClub
пля. я понял.
и я, и Йоханнес сходу просмотрели, что там ext/mysql, а не ext/mysqlND/
да, щас патч туда приложу.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
да, я тоже сначала не разобрался и заморочил голову, жаловался на "ext/mysqlnd/mysqlnd.h",
хотя в ошибке четко написано ext/mysql/mysql_mysqlnd.h
 
Сверху