php7 升级内容,PHP7 升级笔记

本文发布于 5 年前 ,内容可能和实际情况存在出入。如果文章存在错误欢迎指正,我会根据情况对文章进行修改或做隐藏处理

好久没折腾这些东西了,今天闲的没事上官网看了下发现PHP7出来了,就装上了

wget http://hk1.php.net/get/php-7.0.0.tar.gz/from/this/mirror

wget http://hk2.php.net/get/php-7.0.0.tar.gz/from/this/mirror

wget http://php.net/get/php-7.0.0.tar.gz/from/this/mirror

wget http://sg2.php.net/get/php-7.0.0.tar.gz/from/this/mirror

wget http://sg3.php.net/get/php-7.0.0.tar.gz/from/this/mirror

wget http://au1.php.net/get/php-7.0.0.tar.gz/from/this/mirror

wget http://docs.php.net/get/php-7.0.0.tar.gz/from/this/mirror

(试了N个服务器都不好使,最后下载到本机然后上传上去的)

ls

tar -xzvf php-7.0.0.tar.gz

ls

cd php-7.0.0

ls

./configure --help > help.txt

./configure --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --disable-ipv6 --with-zlib --with-curl --with-gd --enable-mbstring --with-mysqli --enable-zip

make

service php-fpm stop

make install

cp /root/php-7.0.0/php.ini-production /usr/local/lib/php.ini

cp /root/php-7.0.0/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.conf

cp sapi/fpm/php-fpm /usr/local/bin

service php-fpm start

于是,出现了一个非常蛋疼的情况

[root@iZ2318ey39rZ ~]# pecl install mysql

No releases available for package "pecl.php.net/mysql"

install failed

MySQL扩展不见了∑(っ °Д °;)っ

好吧,现在就两条路可走了:换PDO、改成MySQLi

PDO没接触过,所以我选择了后者

/var/Typecho/Db/Adapter/Mysql.php:

if (!defined('__TYPECHO_ROOT_DIR__')) exit;

/**

* Typecho Blog Platform

*

* @copyright Copyright (c) 2008 Typecho team (http://www.typecho.org)

* @license GNU General Public License 2.0

* @version $Id: Mysql.php 103 2008-04-09 16:22:43Z magike.net $

*/

/**

* 数据库Mysql适配器

*

* @package Db

*/

class Typecho_Db_Adapter_Mysql implements Typecho_Db_Adapter

{

/**

* 数据库连接字符串标示

*

* @access private

* @var resource

*/

private $_dbLink;

/**

* 判断适配器是否可用

*

* @access public

* @return boolean

*/

public static function isAvailable()

{

return function_exists('mysqli_connect');

}

/**

* 数据库连接函数

*

* @param Typecho_Config $config 数据库配置

* @throws Typecho_Db_Exception

* @return resource

*/

public function connect(Typecho_Config $config)

{

if ($this->_dbLink = new mysqli($config->host . (empty($config->port) ? '' : ':' . $config->port),

$config->user, $config->password,$config->database)) {

if ($config->charset) {

$this->_dbLink->set_charset($config->charset);

}

return $this->_dbLink;

}

/** 数据库异常 */

throw new Typecho_Db_Adapter_Exception(@$this->_dbLink->error);

}

/**

* 执行数据库查询

*

* @param string $query 数据库查询SQL字符串

* @param mixed $handle 连接对象

* @param integer $op 数据库读写状态

* @param string $action 数据库动作

* @throws Typecho_Db_Exception

* @return resource

*/

public function query($query, $handle, $op = Typecho_Db::READ, $action = NULL)

{

if ($resource = @$handle->query($query instanceof Typecho_Db_Query ? $query->__toString() : $query)) {

return $resource;

}

/** 数据库异常 */

throw new Typecho_Db_Query_Exception(@$this->_dbLink->error,$this->_dbLink->errno);

}

/**

* 将数据查询的其中一行作为数组取出,其中字段名对应数组键值

*

* @param resource $resource 查询返回资源标识

* @return array

*/

public function fetch($resource)

{

return $resource->fetch_assoc();

}

/**

* 将数据查询的其中一行作为对象取出,其中字段名对应对象属性

*

* @param resource $resource 查询的资源数据

* @return object

*/

public function fetchObject($resource)

{

return $resource->fetch_object();

}

/**

* 引号转义函数

*

* @param string $string 需要转义的字符串

* @return string

*/

public function quoteValue($string)

{

return '\'' . str_replace(array('\'', '\\'), array('\'\'', '\\\\'), $string) . '\'';

}

/**

* 对象引号过滤

*

* @access public

* @param string $string

* @return string

*/

public function quoteColumn($string)

{

return '`' . $string . '`';

}

/**

* 合成查询语句

*

* @access public

* @param array $sql 查询对象词法数组

* @return string

*/

public function parseSelect(array $sql)

{

if (!empty($sql['join'])) {

foreach ($sql['join'] as $val) {

list($table, $condition, $op) = $val;

$sql['table'] = "{$sql['table']} {$op} JOIN {$table} ON {$condition}";

}

}

$sql['limit'] = (0 == strlen($sql['limit'])) ? NULL : ' LIMIT ' . $sql['limit'];

$sql['offset'] = (0 == strlen($sql['offset'])) ? NULL : ' OFFSET ' . $sql['offset'];

return 'SELECT ' . $sql['fields'] . ' FROM ' . $sql['table'] .

$sql['where'] . $sql['group'] . $sql['having'] . $sql['order'] . $sql['limit'] . $sql['offset'];

}

/**

* 取出最后一次查询影响的行数

*

* @param resource $resource 查询的资源数据

* @param mixed $handle 连接对象

* @return integer

*/

public function affectedRows($resource, $handle)

{

return $handle->affected_rows;

}

/**

* 取出最后一次插入返回的主键值

*

* @param resource $resource 查询的资源数据

* @param mixed $handle 连接对象

* @return integer

*/

public function lastInsertId($resource, $handle)

{

return $handle->insert_id;

}

}

另外,PHP7的异常需要用Throwable而不是Exception,我在这里卡了半个多小时

/var/Typecho/Common.php:235

//非完整PHP代码

public static function exceptionHandle(Throwable $exception)

Typecho可以用了,Discuz!我是没辙了,都折腾一下午了还是打不开,Git上面分享的适配也不好用,现在服务器上跑两个PHP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值