configure in php 5.4.12 seems to have some difficulty with libcurl 7.29.0 :
$ ./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.12_SunOS5.10_sparcv9+GD.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 --enable-posix \
--enable-mbstring --with-mysqli --with-jpeg-dir=/usr/local
--with-png-dir=/usr/local --with-zlib-dir=/usr/local
--with-xpm-dir=/usr/openwin/lib/sparcv9 --with-gd --with-curl
--with-freetype-dir=/usr/local
configure: creating cache ../php-5.4.12_SunOS5.10_sparcv9+GD.001.cache
.
.
.
checking for cURL support... yes
checking if we should use cURL for url streams... no
checking for cURL in default path... found in /usr/local
checking for cURL 7.10.5 or greater... libcurl 7.29.0
checking for SSL support in libcurl... yes
checking how to run the C preprocessor... /opt/solarisstudio12.3/bin/cc -E
checking for openssl support in libcurl... no
checking for gnutls support in libcurl... no
checking for curl_easy_perform in -lcurl... no
configure: error: There is something wrong. Please check config.log for more information.
$
Strange because :
$ curl --version
curl 7.29.0 (sparc-sun-solaris2.10) libcurl/7.29.0 OpenSSL/1.0.1e zlib/1.2.7 libidn/1.26 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP
Looking into config.log I see :
configure:28199: checking for cURL support
configure:28235: result: yes
configure:28244: checking if we should use cURL for url streams
configure:28259: result: no
configure:28289: checking for cURL 7.10.5 or greater
configure:28303: result: libcurl 7.29.0
configure:28528: checking for SSL support in libcurl
configure:28532: result: yes
looks fine.
However later I see this :
configure:28678: checking for openssl support in libcurl
configure:28705: /opt/solarisstudio12.3/bin/cc -o conftest -I/usr/local/include
-I/usr/local/include -I/usr/local/ssl/include -I/opt/mysql/mysql/include -D_TS_E
RRNO -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE64_SOURCE -D_POSIX_PTHREAD_SEMANTICS
-D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -R/usr/ucblib -L/usr/ucblib -R/usr/loc
al/lib -L/usr/local/lib -R/usr/local/ssl/lib -L/usr/local/ssl/lib conftest.c -lc
url -lbz2 -lz -lrt -lm -lnsl -lsocket -lxml2 -lz -liconv -lm -lsocket -lnsl -ls
sl -lcrypto -lcurl -lidn -lssl -lcrypto -lssl -lcrypto -lldap -lz -lrt -lsocket
-lnsl >&5
"/usr/local/include/curl/curlrules.h", line 143: zero or negative subscript
"/usr/local/include/curl/curlrules.h", line 153: zero or negative subscript
"conftest.c", line 249: warning: implicit function declaration: strncasecmp
cc: acomp failed for conftest.c
configure:28705: $? = 2
configure: program exited with status 2
configure: failed program was:
| /* confdefs.h /
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define EXTENSIONS 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DEV_URANDOM 1
| #define HAVE_SOCKLEN_T 1
| #define USE_LOCKING 1
| #define WORDS_BIGENDIAN //
| #define PHP_WRITE_STDOUT 1
| #define HAVE_SOCKET 1
| #define HAVE_LIBSOCKET 1
| #define HAVE_SOCKETPAIR 1
| #define HAVE_HTONL 1
| #define HAVE_GETHOSTNAME 1
| #define HAVE_GETHOSTBYADDR 1
| #define HAVE_LIBNSL 1
| #define HAVE_YP_GET_DEFAULT_DOMAIN 1
| #define HAVE_DLOPEN 1
| #define HAVE_LIBDL 1
| #define HAVE_LIBM 1
| #define HAVE_INET_ATON 1
| #define STDC_HEADERS 1
| #define HAVE_DIRENT_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_DIRENT_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_ARPA_NAMESER_H 1
| #define HAVE_ASSERT_H 1
| #define HAVE_CRYPT_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_GRP_H 1
| #define HAVE_IEEEFP_H 1
| #define HAVE_LANGINFO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_LOCALE_H 1
| #define HAVE_MONETARY_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_PWD_H 1
| #define HAVE_RESOLV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STDARG_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_SYSEXITS_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_MMAN_H 1
| #define HAVE_SYS_MOUNT_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_SYS_STATFS_H 1
| #define HAVE_SYS_STATVFS_H 1
| #define HAVE_SYS_VFS_H 1
| #define HAVE_SYS_VARARGS_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYS_LOADAVG_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_UTIME_H 1
| #define HAVE_SYS_UTSNAME_H 1
| #define HAVE_SYS_IPC_H 1
| #define HAVE_DLFCN_H 1
| #define HAVE_ASSERT_H 1
| #define HAVE_BROKEN_GETCWD 1
| #define HAVE_BROKEN_GLIBC_FOPEN_APPEND 1
| #define HAVE_DECL_TZNAME 1
| #define HAVE_TZNAME 1
| #define MISSING_FCLOSE_DECL 0
| #define HAVE_STRUCT_FLOCK 1
| #define HAVE_SOCKLEN_T 1
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_LONG_LONG_INT 8
| #define SIZEOF_LONG 8
| #define SIZEOF_INT 4
| #define SIZEOF_INTMAX_T 8
| #define HAVE_INTMAX_T 1
| #define SIZEOF_SSIZE_T 8
| #define HAVE_SSIZE_T 1
| #define SIZEOF_PTRDIFF_T 8
| #define HAVE_PTRDIFF_T 1
| #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
| #define HAVE_ST_BLKSIZE 1
| #define HAVE_STRUCT_STAT_ST_BLOCKS 1
| #define HAVE_ST_BLOCKS 1
| #define HAVE_STRUCT_STAT_ST_RDEV 1
| #define HAVE_ST_RDEV 1
| #define HAVE_SOCKADDR_STORAGE 1
| #define HAVE_VPRINTF 1
| #define HAVE_DOPRNT 1
| #define HAVE_ALPHASORT 1
| #define HAVE_ASCTIME_R 1
| #define HAVE_CHROOT 1
| #define HAVE_CTIME_R 1
| #define HAVE_CUSERID 1
| #define HAVE_CRYPT 1
| #define HAVE_FTOK 1
| #define HAVE_GAI_STRERROR 1
| #define HAVE_GCVT 1
| #define HAVE_GETLOADAVG 1
| #define HAVE_GETLOGIN 1
| #define HAVE_GETPROTOBYNAME 1
| #define HAVE_GETPROTOBYNUMBER 1
| #define HAVE_GETSERVBYNAME 1
| #define HAVE_GETSERVBYPORT 1
| #define HAVE_GETHOSTNAME 1
| #define HAVE_GETRUSAGE 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_GMTIME_R 1
| #define HAVE_GETPWNAM_R 1
| #define HAVE_GETGRNAM_R 1
| #define HAVE_GETPWUID_R 1
| #define HAVE_GRANTPT 1
| #define HAVE_INET_NTOA 1
| #define HAVE_INET_NTOP 1
| #define HAVE_INET_PTON 1
| #define HAVE_ISASCII 1
| #define HAVE_LINK 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_LOCKF 1
| #define HAVE_LCHOWN 1
| #define HAVE_LRAND48 1
| #define HAVE_MEMCPY 1
| #define HAVE_MEMMOVE 1
| #define HAVE_MKSTEMP 1
| #define HAVE_MMAP 1
| #define HAVE_NL_LANGINFO 1
| #define HAVE_PERROR 1
| #define HAVE_POLL 1
| #define HAVE_PTSNAME 1
| #define HAVE_PUTENV 1
| #define HAVE_REALPATH 1
| #define HAVE_RANDOM 1
| #define HAVE_RAND_R 1
| #define HAVE_SCANDIR 1
| #define HAVE_SETITIMER 1
| #define HAVE_SETLOCALE 1
| #define HAVE_LOCALECONV 1
| #define HAVE_SETENV 1
| #define HAVE_SETPGID 1
| #define HAVE_SETSOCKOPT 1
| #define HAVE_SETVBUF 1
| #define HAVE_SHUTDOWN 1
| #define HAVE_SIN 1
| #define HAVE_SNPRINTF 1
| #define HAVE_SRAND48 1
| #define HAVE_SRANDOM 1
| #define HAVE_STATFS 1
| #define HAVE_STATVFS 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRCOLL 1
| #define HAVE_STRDUP 1
| #define HAVE_STRERROR 1
| #define HAVE_STRFTIME 1
| #define HAVE_STRPTIME 1
| #define HAVE_STRSTR 1
| #define HAVE_STRTOK_R 1
| #define HAVE_SYMLINK 1
| #define HAVE_TEMPNAM 1
| #define HAVE_TZSET 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_UNSETENV 1
| #define HAVE_USLEEP 1
| #define HAVE_UTIME 1
| #define HAVE_VSNPRINTF 1
| #define HAVE_VASPRINTF 1
| #define HAVE_ASPRINTF 1
| #define HAVE_NANOSLEEP 1
| #define HAVE_LIBRT 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_STRLCAT 1
| #define HAVE_STRLCPY 1
| #define HAVE_GETOPT 1
| #define HAVE_UTIME_H 1
| #define HAVE_UTIME_NULL 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_DECLARED_TIMEZONE 1
| #define HAVE_POSIX_READDIR_R 1
| #define PHP_SIGCHILD 0
| #define DEFAULT_SHORT_OPEN_TAG "1"
| #define HAVE_IPV6 1
| #define SIZEOF_LONG 8
| #define SIZEOF_INT 4
| #define HAVE_INT32_T 1
| #define HAVE_UINT32_T 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRTOLL 1
| #define HAVE_ATOLL 1
| #define HAVE_STRFTIME 1
| #define HAVE_REGEX_T_RE_MAGIC 1
| #define HSREGEX 1
| #define REGEX 1
| #define HAVE_LIBXML 1
| #define HAVE_LIBXML 1
| #define HAVE_DSA_DEFAULT_METHOD 1
| #define HAVE_OPENSSL_EXT 1
| #define HAVE_BUNDLED_PCRE 1
| #define HAVE_SQLITE3 1
| #define HAVE_ZLIB 1
| #define HAVE_BZ2 1
| #define HAVE_CALENDAR 1
| #define HAVE_CTYPE 1
| #define HAVE_CURL_SSL 1
| / end confdefs.h. */
|
| #include <curl/curl.h>
|
| int main(int argc, char *argv[])
| {
| curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
|
| if (data && data->ssl_version && *data->ssl_version) {
| const char *ptr = data->ssl_version;
|
| while(*ptr == ' ') ++ptr;
| return strncasecmp(ptr, "OpenSSL", sizeof("OpenSSL")-1);
| }
| return 1;
| }
|
configure:28728: result: no
Well that is just plain wrong ... proof :
$ cat hack.c
#include <curl/curl.h>
int main(int argc, char *argv[])
{
curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
if (data && data->ssl_version && *data->ssl_version) {
const char *ptr = data->ssl_version;
while(*ptr == ' ') ++ptr;
printf ( "ptr says : %s\n", ptr );
/* return strncasecmp(ptr, "OpenSSL", sizeof("OpenSSL")-1); */
}
return 1;
}
$
$ /opt/solarisstudio12.3/bin/c99 $CFLAGS -I/usr/local/include -c -o hack.o hack.c
$ /opt/solarisstudio12.3/bin/c99 $CFLAGS -R/usr/local/lib -L/usr/local/lib -o hack hack.o -lcurl -lssh2
$ ./hack
ptr says : OpenSSL/1.0.1e
$
so that is a bit of an issue in the configure stage with most recent libcurl and openssl.
Dennis