disclaimer : I realize that by working on Solaris I am in fringe OS territory.
So here I am once again trying to build PHP 5.4.11 on a Solaris 10 server
with the following configure options :
./configure --with-apxs2=/usr/local/bin/apxs --with-mysql=/opt/mysql/mysql \
--with-libxml-dir=/usr/local --sysconfdir=/usr/local/etc \
--includedir=/usr/local/include --libdir=/usr/local/lib \
--libexecdir=/usr/local/libexec --localstatedir=/usr/local/var/php \
--mandir=/usr/local/share/man --infodir=/usr/local/share \
--cache-file=../php-5.4.11_SunOS5.10_sparcv9.001.cache --disable-debug \
--with-pic --with-bz2 --with-gettext --with-gmp --with-iconv --with-openssl \
--with-zlib --enable-ftp --enable-sockets --without-kerberos \
--enable-calendar --enable-xml --disable-json --with-curl=/usr/local \
--enable-posix --with-pdo-mysql --enable-mbstring --with-mysqli
This seemed to work well in the configure stage and once I fired off the compile
all looked well up until :
/bin/bash /usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/libtool --silent --preserve-dup-deps --mode=compile /opt/solarisstudio12.3/bin/cc -Iext/curl/ -I/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/ -DPHP_ATOM_INC -I/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/include -I/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/main -I/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001 -I/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/date/lib -I/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/ereg/regex -I/usr/local/include/libxml2 -I/usr/local/include -I/usr/sfw/include -I/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/mbstring/oniguruma -I/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/mbstring/libmbfl -I/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/mbstring/libmbfl/mbfl -I/opt/mysql/mysql/include -I/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/sqlite3/libsqlite -I/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/TSRM -I/
usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/Zend -I/usr/local/include -I/usr/sfw/include -I/opt/mysql/mysql/include -D_POSIX_PTHREAD_SEMANTICS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -I/usr/local/include -errfmt=error -erroff=%none -errshort=full -xstrconst -xildoff -m64 -xmemalign=8s -xnolibmil -Xc -xcode=pic32 -xregs=no%appl -xlibmieee -mc -g -xs -ftrap=%none -Qy -xbuiltin=%none -xdebugformat=dwarf -xunroll=1 -xtarget=ultraT2 -xcache=8/16/4:4096/64/16 -D_TS_ERRNO -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE64_SOURCE -xmemalign=8s -DZTS -c /usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c -o ext/curl/interface.lo
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/Zend/zend_operators.h", line 597: warning: integer overflow detected: op "<<"
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/Zend/zend_operators.h", line 597: warning: integer overflow detected: op "<<"
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/Zend/zend_operators.h", line 597: warning: integer overflow detected: op "<<"
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/Zend/zend_operators.h", line 597: warning: integer overflow detected: op "<<"
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/Zend/zend_operators.h", line 680: warning: integer overflow detected: op "<<"
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/Zend/zend_operators.h", line 680: warning: integer overflow detected: op "<<"
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/Zend/zend_operators.h", line 680: warning: integer overflow detected: op "<<"
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/Zend/zend_operators.h", line 680: warning: integer overflow detected: op "<<"
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 74: invalid directive
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 281: warning: initializer will be sign-extended: -1
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 285: warning: initializer will be sign-extended: -1
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 291: warning: initializer will be sign-extended: -1
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 296: warning: initializer will be sign-extended: -1
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 305: warning: initializer will be sign-extended: -1
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 309: warning: initializer will be sign-extended: -1
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 313: warning: initializer will be sign-extended: -1
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 317: warning: initializer will be sign-extended: -1
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 320: warning: initializer will be sign-extended: -1
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 325: warning: initializer will be sign-extended: -1
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 340: warning: initializer will be sign-extended: -1
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 349: warning: initializer will be sign-extended: -1
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 2101: warning: enum type mismatch: op "="
"/usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c", line 2115: warning: enum type mismatch: op "="
cc: acomp failed for /usr/local/build/php-5.4.11_SunOS5.10_sparcv9.001/ext/curl/interface.c
gmake: *** [ext/curl/interface.lo] Error 1
I was curious what changes happened between PHP 5.4.10 and 5.4.11 and looked :
node002 $ diff ../php-5.4.10_SunOS5.10_sparcv9.001/ext/curl/interface.c ext/curl/interface.c
5c5
< | Copyright (c) 1997-2012 The PHP Group |
---
> | Copyright (c) 1997-2013 The PHP Group |
979a980,988
> /* {{{ curl_write_nothing
> * Used as a work around. See _php_curl_close_ex
> */
> static size_t curl_write_nothing(char *data, size_t size, size_t nmemb, void *ctx)
> {
> return size * nmemb;
> }
> /* }}} */
>
1688,1689c1697,1704
< if(Z_TYPE_PP(zvalue)==IS_BOOL && Z_BVAL_PP(zvalue)) {
< php_error_docref(NULL TSRMLS_CC, E_NOTICE, "CURLOPT_SSL_VERIFYHOST set to true which disables common name validation (setting `CURLOPT_SSL_VERIFYHOST` to 2 enables common name validation)");
---
> if(Z_BVAL_PP(zvalue) == 1) {
> #if LIBCURL_VERSION_NUM <= 0x071c00 /* 7.28.0 */
> php_error_docref(NULL TSRMLS_CC, E_NOTICE, "CURLOPT_SSL_VERIFYHOST with value 1 is deprecated and will be removed as of libcurl 7.28.1. It is recommended to use value 2 instead");
> #else
> php_error_docref(NULL TSRMLS_CC, E_NOTICE, "CURLOPT_SSL_VERIFYHOST no longer accepts the value 1, value 2 will be used instead");
> error = curl_easy_setopt(ch->cp, option, 2);
> break;
> #endif
2118a2134,2136
> if (Z_REFCOUNT_P(ch->clone) <= 1) {
> zend_llist_clean(&ch->to_free->post);
> }
2644a2663,2677
>
> /*
> * Libcurl is doing connection caching. When easy handle is cleaned up,
> * if the handle was previously used by the curl_multi_api, the connection
> * remains open un the curl multi handle is cleaned up. Some protocols are
> * sending content like the FTP one, and libcurl try to use the
> * WRITEFUNCTION or the HEADERFUNCTION. Since structures used in those
> * callback are freed, we need to use an other callback to which avoid
> * segfaults.
> *
> * Libcurl commit d021f2e8a00 fix this issue and should be part of 7.28.2
> */
> curl_easy_setopt(ch->cp, CURLOPT_HEADERFUNCTION, curl_write_nothing);
> curl_easy_setopt(ch->cp, CURLOPT_WRITEFUNCTION, curl_write_nothing);
>
Now then, it looks like some changes occured to embrace Libcurl 7.28.2 and when I check
my `phpinfo()` on my current Apache build with mod_php in there I see in the curl section :
cURL support enabled
cURL Information 7.28.0
Age 3
Features
AsynchDNS No
Debug No
GSS-Negotiate No
IDN No
IPv6 Yes
Largefile Yes
NTLM Yes
SPNEGO No
SSL Yes
SSPI No
krb4 No
libz Yes
CharConv No
Protocols dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtsp, smtp, smtps, telnet, tftp
Host sparc-sun-solaris2.10
SSL Version OpenSSL/0.9.7d
ZLib Version 1.2.7
So I think that I should be okay. Do I need to upgrade to curl 7.28.2 and then try building PHP 5.4.11 or am I sort of stuck here at 5.4.9 ?
Dennis
So here I am once again trying to build PHP 5.4.11 on a Solaris 10 server
with the following configure options :
So I think that I should be okay. Do I need to upgrade to curl
7.28.2 and then try building PHP 5.4.11 or am I sort of stuck here
at 5.4.9 ?
The ext/curl/interface.c diffs between 5.4.9 and 5.4.11 don't seem
compiler or libcurl unfriendly. Since the compiler messages don't
give a clear compile failure, I can't guess what went wrong.
I compiled 5.4.11 with gcc and libcurl 7.21.2 on Solaris 11.1 without
an issue.
Maybe more regular Solaris users like Johannes or David (aka "dsp". Ex
Sun, and who wrote
http://blog.experimentalworks.net/2012/05/canonical-way-to-build-php-5-4-on-solaris-11/)
can guess at the issue.)
If you drop the 5.4.9 ext/curl code into your 5.4.11 directory tree
what happens? Are you hitting something unrelated in the build
process?
Chris
--
christopher.jones@oracle.com http://twitter.com/ghrd
Newly updated, free PHP & Oracle book:
http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html
So here I am once again trying to build PHP 5.4.11 on a Solaris 10 server
with the following configure options :So I think that I should be okay. Do I need to upgrade to curl
7.28.2 and then try building PHP 5.4.11 or am I sort of stuck here
at 5.4.9 ?The ext/curl/interface.c diffs between 5.4.9 and 5.4.11 don't seem
compiler or libcurl unfriendly. Since the compiler messages don't
give a clear compile failure, I can't guess what went wrong.I compiled 5.4.11 with gcc and libcurl 7.21.2 on Solaris 11.1 without
an issue.
I was going to try to stick with the Oracle Studio compilers and that did bear
fruit quite well, turns out it was a compiler switch throwing me off. I had -Xc
in there as opposed to -Xa. If I was going to be strictly in my own codebase
which is all POSIX strictly conformat and has "#define _XOPEN_SOURCE 600"
as the first line .. then fine. That usually throws a fit when I wander into
opensource land. So once I made the change to -Xa it compiled fine. Well,
fine enough to work and link in with MySQL 5.5.28 and libcurl 7.28.1. I have
it all up and running on Solaris 10 now and the cure phpinfo()
page shows
me that all it reasonably well. I even built the latest libidn and that was a
no brainer.
Maybe more regular Solaris users like Johannes or David (aka "dsp". Ex
Sun, and who wrote
http://blog.experimentalworks.net/2012/05/canonical-way-to-build-php-5-4-on-solaris-11/)
can guess at the issue.)If you drop the 5.4.9 ext/curl code into your 5.4.11 directory tree
what happens? Are you hitting something unrelated in the build
process?
I was just about to do exactly that ( great minds thing alike ) however a little
voicce in my head said "whoa there .. look for the obvious first".
Worked out well.
Thank you for getting back to me.
Dennis