一、起因

最近想尝试体验下laravel框架,由于框架对php版本大于5.6.4,自己服务器的php版本才5.4,因此一次性升级到php7
参考官网的laravel服务器要求:https://laravel.com/docs/5.3/installation

PHP >= 5.6.4
OpenSSL PHP Extension
PDO PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
XML PHP Extension

二、Ubuntu通过apt-get升级PHP7

添加ppa(https://www.linuxdashen.com/debian%E5%92%8Cubuntu%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8D%87%E7%BA%A7php7)

sudo apt-get install python-software-properties software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

安装PHP7

sudo apt-get install php7.0-fpm php7.0-mysql php7.0-common php7.0-curl php7.0-mbstring

三、验证php7.0是否安装成功

php -v

发现还是老的版本,同时发现有一个ph7.0命令:

root:~# php7.0 -v
PHP 7.0.13-1+deb.sury.org~precise+1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologieswith Zend OPcache v7.0.13-1+deb.sury.org~precise+1, Copyright (c) 1999-2016, by Zend Technologies

通过浏览器访问phpinfo()发现还是老的版本,默认使用的还是老版本,存在两个版本共存,下面通过php-fpm修改。

四、升级php-fpm

升级php7.0的同时会自动升级php-fpm到7.0,执行ps -ef | grep php-fpm发现有一个原有的php-fpm和一个/etc/php/7.0/fpm/php-fpm.conf,把老的kill掉,再通过浏览器执行,发现报502错误。*

解决方式:在php-fpm配置文件(/etc/php/7.0/fpm/php-fpm.conf)加上下面几行即可。

[www]
user=www
group=www
listen = 127.0.0.1:9000

重启php-fpm

service php-fpm restart

验证访问成功,并执行phpinfo()确认是php7.0最新版
原因:php-fpm是绑定本地9000端口,nginx通过fastcgi_pass 127.0.0.1:9000;将请求转发到本地9000端口上。

五、配置laravel目录到nginx上

下载laravel一键安装包(http://www.golaravel.com/download/):

  • 解压到nginx的root目录
  • 配置nginx,注意root一定要指向到public目录:
# 完整版
server {listen 80 default_server;# 设定网站根目录root /alidata/www/default/laravel-master/public;# 网站默认首页index index.php index.html index.htm;# 服务器名称,server_domain_or_IP 请替换为自己设置的名称或者 IP 地址server_name test.com# 修改为 Laravel 转发规则location / {try_files $uri $uri/ /index.php?$query_string;}# PHP 支持location ~ \.php$ {try_files $uri /index.php =404;fastcgi_split_path_info ^(.+\.php)(/.+)$;fastcgi_pass  127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}
  • 浏览器访问 test.com验证:

六、使用lavarel报PDOException异常

使用lavarel操作mysql抛异常,数据库的配置是正确的,完整异常信息如下:

Whoops, looks like something went wrong.1/1
PDOException in Connector.php line 55:
could not find driver
in Connector.php line 55
at PDO->__construct('mysql:host=127.0.0.1;dbname=wechat', 'vernon', 'vernon', array('0', '2', '0', false, false)) in Connector.php line 55
at Connector->createConnection('mysql:host=127.0.0.1;dbname=wechat', array('driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'wechat', 'username' => 'vernon', 'password' => 'vernon', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, 'name' => 'mysql'), array('0', '2', '0', false, false)) in MySqlConnector.php line 24
at MySqlConnector->connect(array('driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'wechat', 'username' => 'vernon', 'password' => 'vernon', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, 'name' => 'mysql')) in ConnectionFactory.php line 61
at ConnectionFactory->Illuminate\Database\Connectors\{closure}()
at call_user_func(object(Closure)) in Connection.php line 864
at Connection->getPdo() in Connection.php line 732
at Connection->reconnectIfMissingConnection() in Connection.php line 621
at Connection->run('SELECT * FROM wechat.t_6hc LIMIT 1', array(), object(Closure)) in Connection.php line 342
at Connection->select('SELECT * FROM wechat.t_6hc LIMIT 1')
at call_user_func_array(array(object(MySqlConnection), 'select'), array('SELECT * FROM wechat.t_6hc LIMIT 1')) in DatabaseManager.php line 317
at DatabaseManager->__call('select', array('SELECT * FROM wechat.t_6hc LIMIT 1')) in Facade.php line 218
at Facade::__callStatic('select', array('SELECT * FROM wechat.t_6hc LIMIT 1')) in MemberController.php line 14
at MemberController->test2()
at call_user_func_array(array(object(MemberController), 'test2'), array()) in Controller.php line 78
at Controller->callAction('test2', array()) in ControllerDispatcher.php line 146
at ControllerDispatcher->call(object(MemberController), object(Route), 'test2') in ControllerDispatcher.php line 94
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 96
at ControllerDispatcher->callWithinStack(object(MemberController), object(Route), object(Request), 'test2') in ControllerDispatcher.php line 54
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\MemberController', 'test2') in Route.php line 174
at Route->runController(object(Request)) in Route.php line 140
at Route->run(object(Request)) in Router.php line 724
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Router.php line 726
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 699
at Router->dispatchToRoute(object(Request)) in Router.php line 675
at Router->dispatch(object(Request)) in Kernel.php line 246
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 55

google后发现是配置问题:http://stackoverflow.com/questions/35240414/laravel-5-pdoexception-could-not-find-driver
解决步骤:
- 找到php.ini(通过phpinfo()查看)
- 找到这行extension=php_pdo_mysql.dll,取消注释
- 增加一行extension=pdo_mysql.so
- 执行安装sudo apt-get install php-mysql

解决。

七、service php-fpm restart提示Unknown job

使用service php-fpm restart提示以下错误:

root:/alidata/server/nginx/conf/vhosts# service php-fpm start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service php-fpm start
initctl: Unknown job: php-fpmSince the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start php-fpm

原因php-fpm是一个upstart任务,应该改用

restart php-fpm

搞定。

八、感受

碰碰撞撞升级好了PHP7和安装好laravel,过程比较曲折和受挫,还好最后都解决了,我给的建议是遇到问题要学会google,并发挥自己的理解能力,很多时候其实错误提示已经很明显告知具体是什么错误,要学会看英语文档。结果很重要,中间的解决过程、解决思路更重要。享受过程,对技术保持热情。

升级php7+安装laravel过程中遇到的问题汇总相关推荐

  1. 从JDK 6升级到JDK 7过程中遇到的一个问题(卸载rpm)

    先前系统上有JDK 6的安装,由于要部署Facebook的Presto做一些测试,需要将其升级到JDK 7,但是在安装的过程中遇到以下的问题: [plain] view plaincopy [root ...

  2. macM1下PD虚拟机中ubuntu安装git过程中apt-get update失败、E: 部分索引文件下载失败等问题

    macM1下PD虚拟机中ubuntu安装git过程中apt-get update失败.E: 部分索引文件下载失败等问题 问题描述 怀疑1:更新所用的软件源的问题 怀疑2:多架构支持导致在更新源时链接不 ...

  3. 安装Zabbix过程中出现的问题集

    安装Zabbix过程中出现的问题集 1.web页面无法显示: 原因一:检查系统是否安装apache,以便解析html 原因二:php没有完全安装好 原因三:apache没有提供对php的支持 原因四: ...

  4. linux存储库rep 61082,安装informatic过程中的错误

    1.Check if the DISPLAY variable is set export DISPLAY=192.168.3.201:0.0 在注销用户并切换到oracle或者infa 用户,就可以 ...

  5. Android Studio安装使用过程中踩到的坑

    首先在整成安装的过程中,会弹出一句话,Unable to access Android SDK add-on list,意思是无法访问Android SDK加载项列表 此时,你点击Cancel选项即可 ...

  6. ubuntu中手动编译源码安装Xorg-server过程中依赖关系的解决

    ubuntu中手动编译源码安装Xorg-server过程中依赖关系的解决 在linux系统中手动编译源码安装软件包的过程是非常痛苦的,然而这一个多星期以来我是强忍住脾气体验了一把,虽然面对慢的令人发指 ...

  7. 在使用ambari进行安装部署过程中遇到的glibc问题

    在使用ambari进行安装部署过程中遇到的glibc问题 使用 yum check rpm -e rpm -q 处理问题 报错信息如下: stderr: Traceback (most recent ...

  8. CentOS 7 安装redis过程中gcc: Command not found错误

    CentOS 7 安装redis过程中make错误 问题: [root@cnetos7 redis-5.0.7]# make cd src && make all make[1]: E ...

  9. 安装VUE过程中出现的4048错误

    闭坑指南:安装VUE过程中出现的4048错误 我也是试过了好多提供的解决方案,但还是这个最有效 第一步 打开node.js文件中手动创建的两个文件(node_cache和node_global),右键 ...

最新文章

  1. c++ using 前置声明_C++ 类的前置声明
  2. Redis 通过 RDB 方式进行数据备份与还原
  3. 《大数据》专题征文:医学大数据(截稿时间:2020年5月31日)
  4. android canvas 清空画布,清除canvas画布内容(点擦除+线擦除)
  5. 年轻设计师之于《未来产品的设计》
  6. oracle 增删改查语法,转载-增删改查sql语句语法
  7. Mblock使用时钟中断显示4段数码管的值
  8. 如何用 Python 打飞机 ?
  9. EIDROS3.9学习(一)
  10. 对android layout_wight属性和weight_sum属性的深入理解
  11. ERROR | Corrupt JPEG data: 111 extraneous bytes before marker 0xd9...
  12. 刚入职的新人如何快速了解公司业务
  13. Pro Android学习笔记(一五五):传感器(5): 磁场传感器和方位(上)
  14. 撸了一次 Js 代码
  15. DVWA-SQL Injection级别通关详解
  16. Fabric 超级账本学习【1】Fabcar网络调用Fabric-Java-SDK进行简单开发 FabCar
  17. 方法简单手把手教你,空闲时间在家剪辑视频,一天收入300多
  18. 铁路轨道交通智慧管理系统
  19. C语言基本数据之实型
  20. WebSphere MQ ibm[转]

热门文章

  1. Docker Privileged access
  2. Python学习笔记8:base64
  3. 大小写字母的相互转换 C语言
  4. springboot问题排解
  5. 几种常用网络请求汇总
  6. noi linux 比赛使用哪个编译器,NOI比赛用什么编译器?TP还是FP,那里有下载?
  7. SAP MM部分常用增强-ME21N-MIGO-MB1A
  8. base64 转二进制_一篇文章弄明白Node.js与二进制数据流
  9. android sd卡列目录文件_(科普)详解Android系统SD卡各类文件夹名称
  10. 第五次网页前端培训(JS基础)