ID: 49421 Comment by: sveta at mysql dot com Reported By: gabrycucciolo84pv at fastwebnet dot it Status: Open Bug Type: Compile Failure Operating System: Centos 4.8 PHP Version: 6SVN-2009-08-31 (snap) New Comment:
MySQL is http://bugs.mysql.com/bug.php?id=47026 Previous Comments: ------------------------------------------------------------------------ [2009-09-01 00:40:33] gabrycucciolo84pv at fastwebnet dot it We CAN assume that the problem happens only with PHP6 (php5.3 compiles and makes succesfully) but what I don't know is the linking type. I mean: I don't know if php5.3-dev and php6.0-dev link against mysql in the same way. (i.e. I don't know if php5.3-dev and php6.0-dev include the same file(s) and in the same way (same functions or so). That said, I can't tell weather the bug is php, mysql or compiler related. On thing is certain: gcc HAS been upgraded in the meantime. That lead me to try to recompile php 5.3-dev (fresh sources) to see if the bug was still present and at the end it wasn't. php5.3-dev compiles succesfully. In the past, php6.0-dev compiled succesfully too so I'm not able to understand what is wrong where, I only suppose that the problem might origin from a combination of factors, such as compiler upgraded, mysql version and php version. I also tried to remove from php the --with-mysql line and leave the --with-mysqli=/usr/bin/mysql_config and in this case php compiles succesfully, so the problem resides inside mysql.h include or misunderstanding between compiler, php and mysql headers. UPDATE: More informations: Recently I upgraded my box from CentOS 4.7 to CentOS 4.8 (20 august). Issues with php mysql and the compiler begun after this upgrade. More News: I tried to install on my box gcc4-* from CentOS repository. The error list shortened to this: /bin/sh /root/php6.0-200908312230/libtool --silent --preserve-dup-deps --mode=compile /root/php6.0-200908312230/meta_ccld -Imain/ -I/root/php6.0-200908312230/main/ -DPHP_ATOM_INC -I/root/php6.0-200908312230/include -I/root/php6.0-200908312230/main -I/root/php6.0-200908312230 -I/usr/local/include -I/root/php6.0-200908312230/ext/date/lib -I/root/php6.0-200908312230/ext/ereg/regex -I/usr/include/libxml2 -I/usr/include/imap -I/root/php6.0-200908312230/ext/mbstring/oniguruma -I/root/php6.0-200908312230/ext/mbstring/libmbfl -I/root/php6.0-200908312230/ext/mbstring/libmbfl/mbfl -I/usr/include/mysql -I/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/rdbms/public -I/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/rdbms/demo -I/root/php6.0-200908312230/ext/sqlite3/libsqlite -I/root/php6.0-200908312230/TSRM -I/root/php6.0-200908312230/Zend -D_REENTRANT -DTHREAD=1 -I/usr/include -g -O2 -pthread -DZTS -prefer-non-pic -c main/internal_functions.c -o main/internal_functions.lo In file included from /usr/include/mysql/mysql.h:74, from /root/php6.0-200908312230/ext/mysql/php_mysql_structs.h:43, from main/internal_functions.c:58: /usr/include/mysql/my_list.h:26: error: expected identifier or '(' before numeric constant /usr/include/mysql/my_list.h:30: error: expected identifier or '(' before numeric constant /usr/include/mysql/my_list.h:31: error: expected identifier or '(' before numeric constant /usr/include/mysql/my_list.h:32: error: expected identifier or '(' before numeric constant /usr/include/mysql/my_list.h:33: error: expected identifier or '(' before numeric constant /usr/include/mysql/my_list.h:34: error: expected declaration specifiers or '...' before numeric constant /usr/include/mysql/my_list.h:35: error: expected declaration specifiers or '...' before numeric constant /usr/include/mysql/my_list.h:36: error: expected declaration specifiers or '...' before numeric constant In file included from /root/php6.0-200908312230/ext/mysql/php_mysql_structs.h:43, from main/internal_functions.c:58: /usr/include/mysql/mysql.h:266: error: expected specifier-qualifier-list before numeric constant /usr/include/mysql/mysql.h:574: error: expected specifier-qualifier-list before numeric constant make: *** [main/internal_functions.lo] Error 1 So i think we can now assume that the main responsible for this behaviour is the compiler update of CentOS 4.8 and some PHP6/MYSQL6 interactions with it. The worse is now to understand what is going on... Still trying but no luck I am now analysing php Makefile(s) to look for some differences but surprisingly there aren't. Both have MYSQL_INCLUDE = -I/usr/include/mysql directive, so there should be no way in hell why with 5.3-dev compilation is successful and with 6.0-dev it fails poorly. The compiler likes the mysql.h the first time but not the second...so at this point I have to suspect the compiler beeing called in a wrong way or with some missing flags by php but it's a really strange surreal situation... ------------------------------------------------------------------------ [2009-08-31 13:26:30] gabrycucciolo84pv at fastwebnet dot it I can confirm the issue now. I tried to compile, make and install php5.3-dev and the compile is successful, the make is successful and the install is successful. If I try to compile php6,0-dev with the same configure line, compile is successful, but make dies with the above reported errors. (tried with 31080030 snapshot and the 31081230 one. Is php6.0-dev trying to link to mysql in a different way from 5.3-dev? ------------------------------------------------------------------------ [2009-08-31 03:49:14] gabrycucciolo84pv at fastwebnet dot it Description: ------------ Trying to compile and make snapshot php6.0-200908310030 with MySQL 6.0.11-alpha returns this chain of errors. With 5.3.1-dev the compilation and make are succesful. The installed files of MySQL 6.0.11-alpha have been reinstalled to ensure they were not corrupted. Compilation line: ./configure --with-openssl --enable-ctype --with-curl --enable-exif --with-iconv --enable-json --enable-libxml --enable-mbstring --with-bz2 --enable-soap --enable-bcmath --enable-calendar --enable-ftp --with-gd=/usr/local/bin/gdlib-config --with-mcrypt --with-mhash --enable-zip --enable-xmlreader --enable-xmlwriter --with-mysql --with-mysqli --with-apxs2=/usr/local/apache2/bin/apxs --with-pear --with-zlib --enable-gd-native-ttf --with-pgsql=/usr/bin --enable-maintainer-zts --with-imap --with-kerberos --with-imap-ssl --with-xsl --enable-zend-multibyte --enable-wddx --enable-shmop --with-ldap --with-oci8=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server --with-db4 Reproduce code: --------------- In file included from /usr/include/mysql/mysql.h:74, from /root/php6.0-200908310030/ext/mysql/php_mysql_structs.h:43, from main/internal_functions.c:58: /usr/include/mysql/my_list.h:26: error: syntax error before numeric constant /usr/include/mysql/my_list.h:30: error: syntax error before numeric constant /usr/include/mysql/my_list.h:34: error: syntax error before numeric constant /usr/include/mysql/my_list.h:35: error: syntax error before numeric constant /usr/include/mysql/my_list.h:36: error: syntax error before numeric constant In file included from /root/php6.0-200908310030/ext/mysql/php_mysql_structs.h:43, from main/internal_functions.c:58: /usr/include/mysql/mysql.h:266: error: syntax error before numeric constant /usr/include/mysql/mysql.h:266: warning: no semicolon at end of struct or union /usr/include/mysql/mysql.h:277: error: syntax error before '}' token /usr/include/mysql/mysql.h:277: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:286: error: syntax error before "MYSQL" /usr/include/mysql/mysql.h:286: warning: no semicolon at end of struct or union /usr/include/mysql/mysql.h:296: error: syntax error before '}' token /usr/include/mysql/mysql.h:296: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:352: error: syntax error before '*' token /usr/include/mysql/mysql.h:353: error: syntax error before '*' token /usr/include/mysql/mysql.h:354: error: syntax error before '*' token /usr/include/mysql/mysql.h:355: error: syntax error before '*' token /usr/include/mysql/mysql.h:357: error: syntax error before '*' token /usr/include/mysql/mysql.h:358: error: syntax error before '*' token /usr/include/mysql/mysql.h:359: error: syntax error before '*' token /usr/include/mysql/mysql.h:361: error: syntax error before '*' token /usr/include/mysql/mysql.h:362: error: syntax error before '*' token /usr/include/mysql/mysql.h:363: error: syntax error before '*' token /usr/include/mysql/mysql.h:364: error: syntax error before '*' token /usr/include/mysql/mysql.h:365: error: syntax error before '*' token /usr/include/mysql/mysql.h:366: error: syntax error before '*' token /usr/include/mysql/mysql.h:367: error: syntax error before '*' token /usr/include/mysql/mysql.h:368: error: syntax error before '*' token /usr/include/mysql/mysql.h:369: error: syntax error before '*' token /usr/include/mysql/mysql.h:370: error: syntax error before '*' token /usr/include/mysql/mysql.h:371: error: syntax error before '*' token /usr/include/mysql/mysql.h:373: error: syntax error before '*' token /usr/include/mysql/mysql.h:373: error: syntax error before '*' token /usr/include/mysql/mysql.h:373: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:374: error: syntax error before '*' token /usr/include/mysql/mysql.h:377: error: syntax error before '*' token /usr/include/mysql/mysql.h:378: error: syntax error before '*' token /usr/include/mysql/mysql.h:380: error: syntax error before '*' token /usr/include/mysql/mysql.h:380: error: syntax error before '*' token /usr/include/mysql/mysql.h:386: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:387: error: syntax error before '*' token /usr/include/mysql/mysql.h:388: error: syntax error before '*' token /usr/include/mysql/mysql.h:389: error: syntax error before '*' token /usr/include/mysql/mysql.h:391: error: syntax error before '*' token /usr/include/mysql/mysql.h:393: error: syntax error before '*' token /usr/include/mysql/mysql.h:393: error: syntax error before '*' token /usr/include/mysql/mysql.h:393: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:394: error: syntax error before '*' token /usr/include/mysql/mysql.h:394: error: syntax error before '*' token /usr/include/mysql/mysql.h:394: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:396: error: syntax error before '*' token /usr/include/mysql/mysql.h:404: error: syntax error before '*' token /usr/include/mysql/mysql.h:406: error: `mysql_set_local_infile_handler' declared as function returning a function /usr/include/mysql/mysql.h:407: error: syntax error before "int" /usr/include/mysql/mysql.h:415: error: syntax error before '*' token /usr/include/mysql/mysql.h:417: error: syntax error before '*' token /usr/include/mysql/mysql.h:420: error: syntax error before '*' token /usr/include/mysql/mysql.h:421: error: syntax error before '*' token /usr/include/mysql/mysql.h:423: error: syntax error before '*' token /usr/include/mysql/mysql.h:424: error: syntax error before '*' token /usr/include/mysql/mysql.h:427: error: syntax error before '*' token /usr/include/mysql/mysql.h:428: error: syntax error before '*' token /usr/include/mysql/mysql.h:429: error: syntax error before '*' token /usr/include/mysql/mysql.h:432: error: syntax error before '*' token /usr/include/mysql/mysql.h:433: error: syntax error before '*' token /usr/include/mysql/mysql.h:434: error: syntax error before '*' token /usr/include/mysql/mysql.h:435: error: syntax error before '*' token /usr/include/mysql/mysql.h:435: error: syntax error before '*' token /usr/include/mysql/mysql.h:435: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:436: error: syntax error before '*' token /usr/include/mysql/mysql.h:436: error: syntax error before '*' token /usr/include/mysql/mysql.h:436: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:437: error: syntax error before '*' token /usr/include/mysql/mysql.h:437: error: syntax error before '*' token /usr/include/mysql/mysql.h:437: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:438: error: syntax error before '*' token /usr/include/mysql/mysql.h:440: error: syntax error before '*' token /usr/include/mysql/mysql.h:441: error: syntax error before '*' token /usr/include/mysql/mysql.h:443: error: syntax error before '*' token /usr/include/mysql/mysql.h:445: error: syntax error before '*' token /usr/include/mysql/mysql.h:447: error: syntax error before '*' token /usr/include/mysql/mysql.h:448: error: syntax error before '*' token /usr/include/mysql/mysql.h:449: error: syntax error before '*' token /usr/include/mysql/mysql.h:450: error: syntax error before '*' token /usr/include/mysql/mysql.h:450: error: syntax error before '*' token /usr/include/mysql/mysql.h:451: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:456: error: syntax error before '*' token /usr/include/mysql/mysql.h:460: error: syntax error before '*' token /usr/include/mysql/mysql.h:463: error: syntax error before '*' token /usr/include/mysql/mysql.h:574: error: syntax error before numeric constant /usr/include/mysql/mysql.h:574: warning: no semicolon at end of struct or union /usr/include/mysql/mysql.h:575: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:577: error: 'bind' redeclared as different kind of symbol /usr/include/sys/socket.h:111: error: previous declaration of 'bind' was here /usr/include/mysql/mysql.h:577: error: 'bind' redeclared as different kind of symbol /usr/include/sys/socket.h:111: error: previous declaration of 'bind' was here /usr/include/mysql/mysql.h:616: error: syntax error before '}' token /usr/include/mysql/mysql.h:616: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:643: error: syntax error before '*' token /usr/include/mysql/mysql.h:644: error: syntax error before '*' token /usr/include/mysql/mysql.h:652: error: syntax error before '*' token /usr/include/mysql/mysql.h:654: warning: no semicolon at end of struct or union /usr/include/mysql/mysql.h:657: error: syntax error before '*' token /usr/include/mysql/mysql.h:659: error: syntax error before '*' token /usr/include/mysql/mysql.h:660: error: syntax error before '*' token /usr/include/mysql/mysql.h:661: error: syntax error before '*' token /usr/include/mysql/mysql.h:662: error: syntax error before '*' token /usr/include/mysql/mysql.h:663: error: syntax error before '*' token /usr/include/mysql/mysql.h:664: error: syntax error before '*' token /usr/include/mysql/mysql.h:665: error: syntax error before '*' token /usr/include/mysql/mysql.h:666: error: syntax error before '*' token /usr/include/mysql/mysql.h:667: error: syntax error before '*' token /usr/include/mysql/mysql.h:668: error: syntax error before '*' token /usr/include/mysql/mysql.h:670: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:673: error: syntax error before '*' token /usr/include/mysql/mysql.h:673: error: syntax error before '*' token /usr/include/mysql/mysql.h:673: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:674: error: syntax error before '*' token /usr/include/mysql/mysql.h:676: error: syntax error before '*' token /usr/include/mysql/mysql.h:677: error: syntax error before '*' token /usr/include/mysql/mysql.h:678: error: syntax error before '*' token /usr/include/mysql/mysql.h:681: error: syntax error before '*' token /usr/include/mysql/mysql.h:682: error: syntax error before '*' token /usr/include/mysql/mysql.h:683: error: syntax error before '*' token /usr/include/mysql/mysql.h:686: error: syntax error before '*' token /usr/include/mysql/mysql.h:689: error: syntax error before '*' token /usr/include/mysql/mysql.h:690: error: syntax error before '*' token /usr/include/mysql/mysql.h:691: error: syntax error before '*' token /usr/include/mysql/mysql.h:692: error: syntax error before '*' token /usr/include/mysql/mysql.h:693: error: syntax error before '*' token /usr/include/mysql/mysql.h:694: error: syntax error before '*' token /usr/include/mysql/mysql.h:698: error: syntax error before '*' token /usr/include/mysql/mysql.h:698: error: syntax error before '*' token /usr/include/mysql/mysql.h:698: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:699: error: syntax error before '*' token /usr/include/mysql/mysql.h:699: error: syntax error before '*' token /usr/include/mysql/mysql.h:699: warning: data definition has no type or storage class /usr/include/mysql/mysql.h:700: error: syntax error before '*' token /usr/include/mysql/mysql.h:701: error: syntax error before '*' token /usr/include/mysql/mysql.h:702: error: syntax error before '*' token /usr/include/mysql/mysql.h:703: error: syntax error before '*' token /usr/include/mysql/mysql.h:705: error: syntax error before '*' token /usr/include/mysql/mysql.h:706: error: syntax error before '*' token /usr/include/mysql/mysql.h:707: error: syntax error before '*' token /usr/include/mysql/mysql.h:708: error: syntax error before '*' token /usr/include/mysql/mysql.h:709: error: syntax error before '*' token /usr/include/mysql/mysql.h:710: error: syntax error before '*' token /usr/include/mysql/mysql.h:712: error: syntax error before '*' token /usr/include/mysql/mysql.h:713: error: syntax error before '*' token /usr/include/mysql/mysql.h:714: error: syntax error before '*' token /usr/include/mysql/mysql.h:715: error: syntax error before '*' token /usr/include/mysql/mysql.h:716: error: syntax error before '*' token /usr/include/mysql/mysql.h:717: error: syntax error before '*' token /usr/include/mysql/mysql.h:718: error: syntax error before '*' token make: *** [main/internal_functions.lo] Error 1 Expected result: ---------------- Make Succesful Actual result: -------------- Compilation Failed ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=49421&edit=1