Ubuntu 16.04下安装PHP 7过程详解
这篇文章主要介绍了在Ubuntu 16.04系统下安装PHP 7的全过程,对于需要在该环境下进行开发的朋友们来说,具有一定的参考价值。
由于Ubuntu 16.04默认已经安装了PHP 7,但为了使用Oracle数据库,我们需要安装OCI扩展。为了简化安装过程,我们选择使用apt-get来安装大部分依赖模块,只有在无法使用apt-get的情况下才选择手动编译。
在开始之前,我们需要准备好编译环境。通过执行一些简单的命令,我们可以快速安装PHP的开发包和Apache模块。如果还需要其他模块,如MySQL和mb_string,也可以通过apt-get来安装。
接下来,为了编译OCI扩展,我们需要下载Oracle的Instant Client。下载并解压后,我们需要将Instant Client放置到合适的目录,并创建必要的符号链接。然后,我们需要在环境变量配置文件中加入相应的配置,使系统能够找到Instant Client。
在完成这些准备工作后,我们需要确定已安装PHP的版本,并下载相应版本的PHP源码。源码可以从官网下载源码包,也可以从GitHub仓库克隆。
我们可以开始编译OCI8和PDO_OCI。这个过程需要一定的技术知识和耐心,因为需要处理各种依赖关系和配置。
OCI8与PDO_OCI的编译之旅
进入OCI8的源码目录,开始我们的之旅。使用phpize工具,进入ext/oci8目录。
```bash
cd ext/oci8
phpize
```
接下来,我们执行配置和编译过程。指定Oracle的Instant Client路径为/opt/oracle/instantclient_12_1。
```bash
./configure --with-oci8=instantclient,/opt/oracle/instantclient_12_1
sudo make
```
顺利执行后,你将发现一个充满宝藏的modules文件夹,里面就是我们期待已久的extension。
紧接着,我们转向PDO_OCI的编译。步骤相似,但configure参数有所不同。进入ext/pdo_oci目录,再次执行配置和编译。
```bash
cd ../../ext/pdo_oci
phpize
./configure --with-pdo-oci=instantclient,/opt/oracle/instantclient_12_1,12.1
sudo make
```
编译完成后,我们迎来了激动人心的时刻——使用我们亲手编译的扩展。我们要知道当前PHP的ext目录在哪里。通过命令:
```bash
php -i | grep "extension_dir"
```
假设extension_dir路径为/usr/lib/php/20151012,我们需将编译好的oci8.so和pdo_oci.so复制到该目录下。
```bash
cp oci8.so /usr/lib/php/20151012
cp pdo_oci.so /usr/lib/php/20151012
```
然后,在phpi中添加相关配置项。找到phpi的位置:
```bash
php -i | grep "Configuration File"
```
假设CLI的配置文件路径为/etc/php/7.0/cli/phpi,而我们需要编辑的是Apache(CGI)的phpi文件,位于/etc/php/7.0/apache2目录下。使用sudo vim编辑phpi文件,加入以下两行:
```ini
extension=oci8.so
extension=pdo_oci.so
```
重启Apache服务器。使用以下命令重启apache2服务:
```bash
systemctl restart apache2.service
```
查看phpinfo(),你会发现OCI和PDO_OCI已经成功安装。至此,我们的安装之旅全部完成。
Linux实用技巧分享
在安装过程中,我收获了一些实用的Linux命令技巧。比如,使用以下命令可以:
- 重启服务:`sudo systemctl restart 服务名`
- 查看服务状态:`sudo systemctl status 服务名`
- 查找与某个包相关的所有模块:`apt-cache search 包名关键词 | less`
- 查看某个模块的详细信息:`apt-cache show 包名`
…等等。这些命令能大大提高我们在Linux环境下的工作效率。感谢大家的关注和支持!狼蚁SEO与您一同成长!
编程语言
- Ubuntu 16.04下安装PHP 7过程详解
- vue.js组件之间传递数据的方法
- ajax实现页面加载和内容删除
- ajax实现分页查询功能
- SQL数据库日志已满解决方法
- bootstrap选项卡扩展功能详解
- 简单了解PHP编程中数组的指针的使用
- ajax验证用户名和密码的实例代码
- 微信小程序 Template详解及简单实例
- ajax实现简单登录页面
- vue-router路由参数刷新消失的问题解决方法
- Angularjs实现分页和分页算法的示例代码
- javascript弹性运动效果简单实现方法
- 详解cookie验证的php应用的一种SSO解决办法
- laravel异步监控定时调度器实例详解
- php使用Jpgraph创建折线图效果示例