升级php7+安装laravel过程中遇到的问题汇总
一、起因
最近想尝试体验下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过程中遇到的问题汇总相关推荐
- 从JDK 6升级到JDK 7过程中遇到的一个问题(卸载rpm)
先前系统上有JDK 6的安装,由于要部署Facebook的Presto做一些测试,需要将其升级到JDK 7,但是在安装的过程中遇到以下的问题: [plain] view plaincopy [root ...
- macM1下PD虚拟机中ubuntu安装git过程中apt-get update失败、E: 部分索引文件下载失败等问题
macM1下PD虚拟机中ubuntu安装git过程中apt-get update失败.E: 部分索引文件下载失败等问题 问题描述 怀疑1:更新所用的软件源的问题 怀疑2:多架构支持导致在更新源时链接不 ...
- 安装Zabbix过程中出现的问题集
安装Zabbix过程中出现的问题集 1.web页面无法显示: 原因一:检查系统是否安装apache,以便解析html 原因二:php没有完全安装好 原因三:apache没有提供对php的支持 原因四: ...
- linux存储库rep 61082,安装informatic过程中的错误
1.Check if the DISPLAY variable is set export DISPLAY=192.168.3.201:0.0 在注销用户并切换到oracle或者infa 用户,就可以 ...
- Android Studio安装使用过程中踩到的坑
首先在整成安装的过程中,会弹出一句话,Unable to access Android SDK add-on list,意思是无法访问Android SDK加载项列表 此时,你点击Cancel选项即可 ...
- ubuntu中手动编译源码安装Xorg-server过程中依赖关系的解决
ubuntu中手动编译源码安装Xorg-server过程中依赖关系的解决 在linux系统中手动编译源码安装软件包的过程是非常痛苦的,然而这一个多星期以来我是强忍住脾气体验了一把,虽然面对慢的令人发指 ...
- 在使用ambari进行安装部署过程中遇到的glibc问题
在使用ambari进行安装部署过程中遇到的glibc问题 使用 yum check rpm -e rpm -q 处理问题 报错信息如下: stderr: Traceback (most recent ...
- 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 ...
- 安装VUE过程中出现的4048错误
闭坑指南:安装VUE过程中出现的4048错误 我也是试过了好多提供的解决方案,但还是这个最有效 第一步 打开node.js文件中手动创建的两个文件(node_cache和node_global),右键 ...
最新文章
- c++ using 前置声明_C++ 类的前置声明
- Redis 通过 RDB 方式进行数据备份与还原
- 《大数据》专题征文:医学大数据(截稿时间:2020年5月31日)
- android canvas 清空画布,清除canvas画布内容(点擦除+线擦除)
- 年轻设计师之于《未来产品的设计》
- oracle 增删改查语法,转载-增删改查sql语句语法
- Mblock使用时钟中断显示4段数码管的值
- 如何用 Python 打飞机 ?
- EIDROS3.9学习(一)
- 对android layout_wight属性和weight_sum属性的深入理解
- ERROR | Corrupt JPEG data: 111 extraneous bytes before marker 0xd9...
- 刚入职的新人如何快速了解公司业务
- Pro Android学习笔记(一五五):传感器(5): 磁场传感器和方位(上)
- 撸了一次 Js 代码
- DVWA-SQL Injection级别通关详解
- Fabric 超级账本学习【1】Fabcar网络调用Fabric-Java-SDK进行简单开发 FabCar
- 方法简单手把手教你,空闲时间在家剪辑视频,一天收入300多
- 铁路轨道交通智慧管理系统
- C语言基本数据之实型
- WebSphere MQ ibm[转]