现在我已经把我的头撞到墙上了几天了。 我只是无法弄清楚。
我用plesk 12和apache 2.2运行Ubuntu 12。
我已经尝试编译PHP 5.6.10和PHP 5.6.11与这两个选项的变种:
./configure --prefix=/opt/php-5.6.11-apache --with-config-file-path=/opt/php-5.6.11-apache/etc --disable-debug --enable-roxen-zts --enable-short-tags --enable-magic-quotes --enable-sigchild --enable-libgcc --with-libdir=/lib/x86_64-linux-gnu --with-openssl --with-openssl-dir=/usr/bin --with-zlib --enable-bcmath --with-bz2 --enable-calendar --enable-ctype --with-curl=/usr/bin --with-cdb --enable-inifile --enable-flatfile --enable-dba --with-xsl --enable-dom --enable-exif --enable-filter --enable-ftp --with-gd --with-png-dir=/usr --with-jpeg-dir=/usr --enable-gd-native-ttf --with-freetype-dir=/usr --with-gettext --with-gmp --enable-hash --with-iconv --with-imap --with-imap-ssl --with-kerberos --with-ldap --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-mcrypt=/usr --with-mhash --with-mysql --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-mysqli=mysqlnd --with-pgsql --with-unixODBC=/usr --with-sqlite --with-sqlite3=/usr --enable-pdo --with-pdo-mysql=mysqlnd --with-pdo-pgsql --with-pdo-odbc=unixODBC,/usr --with-pdo-sqlite=/usr --enable-phar --enable-posix --enable-session --with-mm --enable-shmop --enable-soap --with-xmlrpc --enable-libxml --enable-sockets --with-pspell --with-enchant --enable-intl --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-tidy --enable-tokenizer --enable-wddx --enable-simplexml --enable-xml --enable-xmlreader --enable-xmlwriter --enable-zip --with-pear --with-pcre-regex --with-snmp --enable-json --enable-pcntl --enable-inline-optimization --enable-fileinfo --enable-zend-multibyte --enable-opcache --enable-cgi --with-apxs2=/usr/bin/apxs2 --disable-all ./configure --prefix=/opt/php-5.6.10 --with-config-file-path=/opt/php-5.6.10/etc --disable-debug --enable-roxen-zts --enable-short-tags --enable-magic-quotes --enable-sigchild --enable-libgcc --with-libdir=/lib/x86_64-linux-gnu --with-openssl --with-zlib --enable-bcmath --with-bz2 --enable-calendar --enable-ctype --with-curl --with-cdb --enable-inifile --enable-flatfile --enable-dba --with-xsl --enable-dom --enable-exif --enable-filter --enable-ftp --with-gd --with-png-dir=/usr --with-jpeg-dir=/usr --enable-gd-native-ttf --with-freetype-dir=/usr --with-gettext --with-gmp --enable-hash --with-iconv --with-imap --with-imap-ssl --with-kerberos --with-ldap --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-mcrypt --with-mhash --with-mysql --with-mysqli --with-pgsql --with-unixODBC=/usr --with-sqlite --with-sqlite3 --enable-pdo --with-pdo-mysql --with-pdo-pgsql --with-pdo-odbc=unixODBC,/usr --with-pdo-sqlite --enable-phar --enable-posix --enable-session --with-mm --enable-shmop --enable-soap --with-xmlrpc --enable-libxml --enable-sockets --with-pspell --with-enchant --enable-intl --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-tidy --enable-tokenizer --enable-wddx --enable-simplexml --enable-xml --enable-xmlreader --enable-xmlwriter --enable-zip --with-pear --with-pcre-regex --with-snmp --enable-json --enable-pcntl --enable-inline-optimization --enable-fileinfo --enable-zend-multibyte --enable-opcache --enable-cgi --disable-all
我无法连接到PHP的MySQL SSL!
我得到以下错误:
PHP Warning: mysql_connect(): this stream does not support SSL/crypto in /xxxxx/test2.php on line 2 PHP Warning: mysql_connect(): Cannot connect to MySQL by using SSL in /xxxxx/test2.php on line 2 PHP Warning: mysql_connect(): [2002] (trying to connect via unix:///var/run/mysqld/mysqld.sock) in /xxxxx/test2.php on line 2
我的test2.php包含以下内容:
<?php $link = mysql_connect("localhost","axxxx5","Jxxxxxxxxse",false,MYSQL_CLIENT_SSL) or die(mysql_error()); $res = mysql_query("SHOW STATUS LIKE 'ssl_cipher';",$link); print_r(mysql_fetch_row($res)); echo "Finished."; ?>
注意:我也不能连接到phpmyadmin到SSL使用mysqli查询而不是mysql_connect,所以它不是一个弃用的东西。
当我运行phpinfo时,一切似乎都很好:
OpenSSL support enabled OpenSSL Library Version OpenSSL 1.0.1 14 Mar 2012 OpenSSL Header Version OpenSSL 1.0.1 14 Mar 2012
但是,当我从控制台检查PHP模块(Ubuntu的包)一切工作:
$ php /xxx/test2.php Array ( [0] => Ssl_cipher [1] => AES256-SHA ) Finished
我以为连接到localhost默认使用Unix套接字,而不是TCP。 然后SSL可能根本不被支持。 至less对于使用原始MySQL库的实现来说:从手册 :
在Unix上,MySQL程序专门处理主机名localhost ,与其他基于networking的程序相比,这种方式可能与您期望的不同。 对于连接到本地主机,MySQL程序试图通过使用Unix套接字文件连接到本地服务器。 即使给出了–port或-P选项来指定端口号,也会发生这种情况。
而不是使用本地主机使用正确的主机名或IP地址强制TCP连接。 这要求将MySQL服务器configuration为支持“远程”networking连接,并要求正确的ACL被授予访问权限。
无论如何,使用TLS连接到本地主机上的服务是完全浪费资源恕我直言…