<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Soul Of Free Loop &#187; MySQL</title>
	<atom:link href="https://zohead.com/archives/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>https://zohead.com</link>
	<description>Uranus Zhou&#039;s Blog</description>
	<lastBuildDate>Sat, 19 Jul 2025 15:42:46 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8</generator>
	<item>
		<title>PHP 7找回MySQL扩展解决WordPress问题</title>
		<link>https://zohead.com/archives/php7-mysql/</link>
		<comments>https://zohead.com/archives/php7-mysql/#comments</comments>
		<pubDate>Tue, 21 Feb 2017 14:38:03 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[扩展]]></category>

		<guid isPermaLink="false">https://zohead.com/?p=1360</guid>
		<description><![CDATA[PHP 7 使用 MySQL 的问题 最近将 VPS 上的博客程序都迁移到 Bluemix 容器上之后，运行起来倒还算稳定，前两天手贱将 Bluemix 系统上的 LNMP 环境更新到了 1.3 版本，顺带地把 PHP 也更新到 7.0.7 版本了，不过更新完成之后访问博客就碰到了 WordPress 报错： 这才想起来 PHP 7 已经完全移除了 MySQL 扩展支持，通过 phpinfo 也能看到老的 mysql_ 系列的函数都不能使用了，一般建议使用新的 PHP mysqli 或者 pdo 扩展进行替换。 我的博客程序使用的还是 WordPress 3.6 版本，自然不支持 PHP 7， [&#8230;]]]></description>
				<content:encoded><![CDATA[<h2 id="php7-mysql-problem">PHP 7 使用 MySQL 的问题</h2>
<p>最近将 VPS 上的博客程序都<a href="https://zohead.com/archives/vps-anti-spider/">迁移</a>到 Bluemix 容器上之后，运行起来倒还算稳定，前两天手贱将 Bluemix 系统上的 <a href="https://lnmp.org/">LNMP</a> 环境更新到了 1.3 版本，顺带地把 PHP 也更新到 7.0.7 版本了，不过更新完成之后访问博客就碰到了 WordPress 报错：</p>
<pre class="brush: plain; title: ; notranslate">
您的 PHP 似乎没有安装运行 WordPress 所必需的 MySQL 扩展。
</pre>
<p>这才想起来 PHP 7 已经完全移除了 MySQL 扩展支持，通过 phpinfo 也能看到老的 <code>mysql_</code> 系列的函数都不能使用了，一般建议使用新的 PHP mysqli 或者 pdo 扩展进行替换。</p>
<p>我的博客程序使用的还是 WordPress 3.6 版本，自然不支持 PHP 7，如果直接升级 WordPress 的话又要考虑一堆 WordPress 插件的兼容性问题，于是像我这么懒的人就考虑如何把 PHP 7 的 MySQL 扩展找回来了。</p>
<h2 id="php7-mysql-ext">找回 PHP 7 的 MySQL 扩展</h2>
<p>由于 PHP 7 只是在发布前将对 MySQL 扩展的支持移除掉了，这样我们就可以检出遗留版本的支持 MySQL 扩展的 PHP 7 代码自行编译安装了，不过需要注意的就是 MySQL 扩展可是完全没有后续更新的了。</p>
<p>我们可以首先看看 LNMP 环境里 PHP 7 自带的扩展：</p>
<pre class="brush: bash; title: ; notranslate">
root@instance-007a20ff:/home/lnmp1.3/src/php-7.0.7/ext# ls
bcmath      date      ext_skel_win32.php  gmp        json      mysqlnd  pcre          pdo_odbc    pspell      simplexml  sqlite3   tokenizer  xsl
bz2         dba       fileinfo            hash       ldap      oci8     pdo           pdo_pgsql   readline    skeleton   standard  wddx       zip
calendar    dom       filter              iconv      libxml    odbc     pdo_dblib     pdo_sqlite  recode      snmp       sysvmsg   xml        zlib
com_dotnet  enchant   ftp                 imap       mbstring  opcache  pdo_firebird  pgsql       reflection  soap       sysvsem   xmlreader
ctype       exif      gd                  interbase  mcrypt    openssl  pdo_mysql     phar        session     sockets    sysvshm   xmlrpc
curl        ext_skel  gettext             intl       mysqli    pcntl    pdo_oci       posix       shmop       spl        tidy      xmlwriter
</pre>
<p>MySQL 扩展确实已经被移除了，我们可以直接在 <code>ext</code> 目录下检出老的 PHP MySQL 扩展代码：</p>
<pre class="brush: bash; title: ; notranslate">
root@instance-007a20ff:/home/lnmp1.3/src/php-7.0.7/ext# git clone https://github.com/php/pecl-database-mysql mysql --recursive
Cloning into 'mysql'...
remote: Counting objects: 145, done.
remote: Total 145 (delta 0), reused 0 (delta 0), pack-reused 145
Receiving objects: 100% (145/145), 88.41 KiB | 0 bytes/s, done.
Resolving deltas: 100% (65/65), done.
Checking connectivity... done.
</pre>
<p>使用 <code>phpize</code> 准备编译：</p>
<pre class="brush: bash; title: ; notranslate">
root@instance-007a20ff:/home/lnmp1.3/src/php-7.0.7/ext# cd mysql
root@instance-007a20ff:/home/lnmp1.3/src/php-7.0.7/ext/mysql# ls
config.m4  config.w32  CREDITS  LICENSE  mysql.mak  mysql_mysqlnd.h  package.xml  php_mysql.c  php_mysql.h  php_mysql_structs.h  README.md  tests
root@instance-007a20ff:/home/lnmp1.3/src/php-7.0.7/ext/mysql# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20151012
Zend Module Api No:      20151012
Zend Extension Api No:   320151012
root@instance-007a20ff:/home/lnmp1.3/src/php-7.0.7/ext/mysql# ./configure --with-php-config=/usr/local/php/bin/php-config
</pre>
<p>运行 <code>make</code> 编译之后 <code>make install</code> 确认 MySQL 扩展安装是否正确：</p>
<pre class="brush: bash; title: ; notranslate">
root@instance-007a20ff:/home/lnmp1.3/src/php-7.0.7/ext/mysql# make &amp;&amp; make install
root@instance-007a20ff:~# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
fileinfo.so  mysql.so  opcache.a  opcache.so
</pre>
<p>最后修改 <code>php.ini</code> 配置文件，增加一行：</p>
<pre class="brush: plain; title: ; notranslate">
extension = &quot;mysql.so&quot;
</pre>
<p>重新启动 LNMP 程序就能在 phpinfo 里看到 MySQL 扩展了：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442872/phpinfo-mysql.png" alt="PHP 7 下的 MySQL 扩展" title="PHP 7 下的 MySQL 扩展"></p>
<p>此时再访问 WordPress 博客就没有问题了，PHP 7 的问题初步搞定。另外网上也有人是直接把老的 MySQL 扩展静态编译进 PHP 7 程序中，这样用起来也还算比较方便的。当然后面我肯定还是要找机会直接升级 WordPress 了，毕竟 PHP 7 带着有各种漏洞的 WordPress 3.6 实在有点浪费哈，最后祝大家玩的开心。</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/php7-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
