Grav 升级遇到的 PHP 升级和权限问题

我用的博客系统是 Grav,升级到 1.6.6 的过程中出现了问题,花了我不少时间修博客。

后台提示我 Grav 可以升级了,我就点击升级。结果告诉我需要 PHP>=7.1.3,我的是 7.0,于是就趁今天晚上登录到服务器来搞。

PHP 7.0 升级到 7.1

我的服务器是 CentOS7。

网上搜索到的升级方案是下载源代码进行编译,我觉得没必要吧。后来看到了直接用 yum 升级的博客。折腾了一番,最后成功升级了。

# 更换 RPM 源
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

# 关闭正在使用的 php-fpm 和 nginx 服务
service php-fpm stop
service nginx stop

# 删除旧的 PHP 安装包
yum remove php-common

# 安装 PHP7.1 版本
yum install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-fpm php71w-gd php71w-mbstring php71w-mysqlnd php71w-opcache php71w-pdo php71w-xml php71w-ldap php71w-mcrypt

# 重启服务
service php-fpm start
service nginx start

# 检查版本
php -v

yum 安装出错,再次安装时 rpm 数据库损坏

报错 错误:rpmdb: BDB0113 Thread/process 31450/140153652090688 failed,重建 rpm 数据库即可。

cd /var/lib/rpm
rm -rf __db*
rpm --rebuilddb

升级 Grav

我直接在后台升级的,进入 Grav 项目的根目录:

./bin/gpm self-upgrade

升级之后打开首页却是 500 错误。首先查找错误日志

tail /var/log/nginx/error.log
tail /var/log/php-fpm/error.log
tail /var/log/php-fpm/www-error.log # 在这找到了有用信息:

PHP Fatal error:  Uncaught RuntimeException: Failed to save file /home/www/grav/cache/compiled/blueprints/master-ffflipped.cn.php in /home/www/grav/vendor/rockettheme/toolbox/File/src/File.php:351
Stack trace:...

接下来我修改了/home/www/grav/vendor/rockettheme/toolbox/File/src/File.php,注释掉了 try-catch。然后再次访问,看到了保存文件的错误信息,是因为创建文件夹失败。

所以临时的解决方法是将全部文件改为了 777 权限。

chmod +777 -R .