在windows和centos系统中搭建PHP7开发环境_php用contos和win-程序员宅基地

技术标签: PHP  

在win7环境上安装:

一:准备软件:

1.下载:php-7.1.16-Win32-VC14-x64.zip    地址:http://php.net/downloads.php

2.下载:apache2.4:httpd-2.4.33-o102o-x64-vc14-r2.zip  地址:http://httpd.apache.org/download.cgi

注意:Apache2.2中是不支持php7的,所以,我们必须下载Apache2.4

3. 下载Visual C++ 2015

由于php7(apache也需要)使用了VC14的编译环境,所以我们还需要下载Visual C++ 2015,下载地址:

https://www.microsoft.com/en-US/download/details.aspx?id=48145

二.安装:

1.安装vc++ 2015 

双击安装vc_redist.x64.exe(要点时间,等着)

2. 解压php-7.1.16-Win32-VC14-x64.zip:

设置环境变量:在Path 中添加“  ;C:\wjanzhuang\php7.1.16;C:\wjanzhuang\php7.1.16\ext  ”

php -version    出现版本号,则安装成功。

配置参数:

需要修改的文件:C:/wjanzhuang/php7.1.16/php.ini

a. 修改php.ini-development

    将C:/wjanzhuang/php7.1.16目录下的php.ini-development文件名修改为php.ini

b. 修改扩展目录

    extension_dir = "C:/wjanzhuang/php7.1.16/ext"

    此处必须为绝对路径

c. 开启相关扩展

根据需要开启相关扩展,我这边只开启了如下扩展:

    extension=php_gd2.dll

    extension=php_curl.dll

    extension=php_mbstring.dll

    extension=php_openssl.dll

    extension=php_mysqli.dll

    extension=php_pdo_mysql.dll

注意:php7中,已经不支持php_mysql.dll这个扩展了。

d. 设置时区

    date.timezone ="Asia/Shanghai"e. 设置错误报告等级

    error_reporting = E_ALL ^ E_NOTICE

e. 设置文件传输参数

upload_max_filesize = 12M              设置上传文件的大小

max_file_uploads = 60                        设置一次上传的附件总数

三.安装apache

1.解压httpd-2.4.33-o102o-x64-vc14-r2.zip

2.创建Apache服务

以管理员身份进入cmd

输入:

 

出现:

Installing the "Apache2.4" service

The "Apache2.4" service is successfully installed

则创建成功。

3.配置apache参数

需要修改的文件:C:/wjanzhuang/httpd2.4.33/Apache24/conf/httpd.conf

a. 设置apache的安装目录

Define SRVROOT "/Apache24"修改为

Define SRVROOT "C:/wjanzhuang/httpd2.4.33/Apache24"

b. 配置工作空间

将下面两行

DocumentRoot "${SRVROOT}/htdocs"

<Directory "${SRVROOT}/htdocs">

修改为   (D:/phpwork为存放php工程目录的

DocumentRoot "D:/phpwork"

<Directory "D:/phpwork">

c. 禁止访问网站目录

对于上面<Directory "D:/phpwork">,出于安全方面的考虑,我们最好配置该选项,禁止访问网站的目录列表。设置成如下:

<Directory "D:/phpwork">
    Options All
    AllowOverride All
    Require all granted
</Directory>

d. 装载php模块

在#LoadModule xml2enc_module modules/mod_xml2enc.so下面添加:(将php的目录装在到apache配置文件中)

PHPIniDir "C:/wjanzhuang/php7.1.16"

LoadModule php7_module "C:/wjanzhuang/php7.1.16/php7apache2_4.dll"

AddType application/x-httpd-php .php

注意:php7apache2_4.dll文件要下载以上safe版的才有,不要下错php版本。

e. 配置默认首页

在<IfModule dir_module>标签内,将

DirectoryIndex index.html

修改为

DirectoryIndex index.html index.php

f. 检查Apache配置

切换到apache安装目录的bin目录下,输入:httpd.exe -t,如图:

如果返回Syntax OK,则表示apache在配置上以及所需的运行环境都是OK的,如果不是,则需要根据错误提示,排查错误。

五,测试:

1.编辑index.php文件放入D:\phpwork文件夹中。index.php测试码如下:

<!DOCTYPE html>
<html>
<body>
<?php
$x=10; 
$y=6;
echo ($x + $y);
echo "<br>";
echo ($x - $y);
echo "<br>";
echo ($x * $y);
echo "<br>";
echo ($x / $y); 
echo "<br>";
echo ($x % $y); 
?>   
</body>
</html>

2.在C:\wjanzhuang\httpd2.4.33\Apache24\bin中点击httpd.exe文件启动apache服务器

在页面中访问localhost等到相应页面则成功。

 

在linux(centos7.2上)环境上安装:

一.apache安装

1.运行:yum install httpd httpd-devel

2.修改配置文件:/etc/httpd/conf  参照win下的配置。

1:Listen 8006

2:<Directory "/var/www/html">
   
Options All
    AllowOverride All
    Require all granted

</Directory>

3:<IfModule dir_module>
    DirectoryIndex index.html
index.php
</IfModule>

注意:默认是80端口,当服务器上80被其他的程序占用时必须换成其他端口,否则启动不了。换成好的端口要开防火墙,在阿里云服务器则在管理界面打开端口即可。

3.进入/bin

systemctl  start httpd.service   启动服务

systemctl  stop httpd.service   停止服务

systemctl  restart httpd.service 重启服务

 

第二、设置开机启动/关闭

systemctl enable httpd.service #开机启动

systemctl disable httpd.service #开机不启动

第三、检查httpd状态

systemctl status httpd.service

 

关闭防火墙(阿里云直接在阿里云管理界面配置)

关闭:systemctl stop firewalld.service

查看状态:systemctl status firewalld.service

注释:当需要拆卸重新安装时:第一步:yum list | grep httpd  第二步: yum erase httpd.x86_64  第三步:重新安装

二、PHP安装

1、yum安装(这种安装默认是装php5,所以一般不用这种安装方式)
yum -y install php

php各项服务安装:
yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-mysql

网站文件夹:
/var/www/html

 

然后把你的PHP文件上传到html文件夹里去浏览器中输入主机IP加端口(默认是80)就可以了

附录:

在centos系统安装PHP时,默认的安装版本都很低,所以要指定安装的高版本。方法如下:

 

以是CentOS 7.0的源为例。

# yum install epel-release# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

使用yum list命令查看可安装的包(Packege)。

# yum list --enablerepo=remi --enablerepo=remi-php70 | grep php

安装PHP7.0yum源配置好了,

下一步就安装PHP7.0

yum install --enablerepo=remi --enablerepo=remi-php70

 

2、源码安装php7.2.5

 

1.下载php7.2.5.tar.gz并解压

tar -zxvf php7.2.5.tar.gz

进入:cd  php7.2.5

2.进入解压包后,安装必要依赖:

yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel  autoconf

3.安装gcc

yum install gcc

yum install gcc-c++

4.安装
yum -y install libxslt-devel* 
yum -y install perl* 
yum -y install httpd-devel
find / -name apxs 得到的路径是:/usr/bin/apxs

于是得到--with-apsx2的路径是/usr/bin/apxs

注意:yum -y install perl* 安装的会非常多,也可以不装,缺什么再单独装。

 

5.配置

./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath -enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-pcntl --with-curl --with-fpm-user=nginx --enable-ftp --enable-session --enable-xml --with-apxs2=/usr/bin/apxs

注意:--prefix=/usr/local/php7是php的安装路径。--with-apxs2=/usr/bin/apxs是apache中路径,不配置的话,运行php文件时,只是下载,不能解析,且无法生存libphp.so文件,可通过find / -name apxs 得到的路径是:/usr/bin/apxs。未生成libphp.so文件,怎删除安装的,重新运行./configure ........

坑:::--with-config-file-path=/usr/local/php7/etc 设置php.ini设置的位置,后面操作要把php.ini复制到这个文件夹。否则设置的php.ini 是无效的。

6.编译
make

7.编译检查
make test 
这步可走可不走,因为它老是爱提示错误,但又不给错误信息,如果有问题,那么编译的时候一定不成功,既然编译成功了,那么可以直接进行安装。

8.安装
make install

9.添加环境变量
vi /etc/profile
在末尾加入:
PATH=$PATH:/usr/local/php7/bin
export PATH

10.使改动立即生效
source /etc/profile

11.查看php版本
php -v 
(如果有问题 请检查添加的环境变量是否是PHP安装目录里的bin目录)

12.生成必要文件
cp php.ini-production /usr/local/php7/etc/php.ini
cp sapi/fpm/php-fpm /usr/local/php7/etc/php-fpm
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

 

以下配置是apache的配置,将php配置到apache环境中

13.配置

修改Apache配置:
vi /etc/httpd/conf/httpd.conf

DocumentRoot "/var/www/html"
(请注意,/var/www这个路径是自定义,在配置文件中有好几处这个路径,如果更改,请全局搜索一下都改掉)

找到
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
在后面添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .php7

搜索<IfModule dir_module>下面这一块添加上index.php
<IfModule dir_module>
 DirectoryIndex index.html index.php
</IfModule>

搜索有没有下面这一行:
LoadModule php7_module modules/libphp7.so
如果没有 请手动添加 否则 会出现运行php文件变成下载,通过find / -name '*libphp7.so*'

在最下面配置域名
<VirtualHost *:80>
 DocumentRoot /var/www/html
 ServerName www.你的域名.com
 ServerAlias 你的域名.com
 <Directory /phpstudy/www>
 Options +Indexes +FollowSymLinks +ExecCGI
 AllowOverride All
 Order Deny,Allow
 Allow from all
 </Directory>
</VirtualHost>

14.测试
在www目录下创建index.php
添加<?php phpinfo();?>
访问:www.你的域名.com

注意问题:

问题一:出现:Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

基本上apache端口被占用,需要换其他端口。如:81

问题二:父目录(/var/www/html)不可写。安装程序无法建立数据目录(/var/www/html/moodledata),即使在使用了chmod  -R 777  /var/www/html/moodledata 也是会出现问题。这是跟linux系统的安全机制相关,需要再系统内部进行设置,需要如下两步:

1.修改对象(http)的安全上下文

chcon -R -t httpd_sys_rw_content_t  /var/www/html/moodledata

2.设置权限

chmod -R 777   /var/www/html/moodledata 

问题三:安装数据库时出现:mysqli_connect(): (HY000/2002): Permission denied

因为没有关闭selinux,通常情况下载安装完CentOS7后,默认情况下SElinux是启用状态。

查看状态:# sestatus

Current mode:  enforcing  

执行关闭:setenforce 0  

Current mode: permissive    

可以永久性关闭:将/etc/selinux/config中SELINUX设置为disabled

SELINUX=disabled

3、拆卸php

首先这个命令是删除不干净的:yum remove php

必须使用:rpm -qa|grep php 出现 :

php-pdo-5.1.6-27.el5_5.3

php-mysql-5.1.6-27.el5_5.3

然后逐个删除:

rpm -e php-mysql-5.1.6-27.el5_5.3

rpm -e php-pdo-5.1.6-27.el5_5.3

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kunzai6/article/details/80039408

智能推荐

zabbix短信告警oracle,zabbix 实现短信告警-程序员宅基地

文章浏览阅读402次。之前一直调用飞信接口发送告警信息,最近购买了第三方短信接口。所以准备使用接口发送告警。短信接口是基于https的摘要认证。https认证还是自己做的,调用接口的时候还需要load证书。感觉超级难用,不管那么多,先让它跑起来再说。废话不多说,先上代码。#!/usr/bin/envpython#coding:utf-8importrequestsfromrequests.authimport..._zabbix实现短信告警

soapui中文操作手册(四)----MOCK服务_soapui设置成中文-程序员宅基地

文章浏览阅读6.8k次,点赞2次,收藏12次。转载地址:http://www.cnblogs.com/zerotest/p/4670005.htmlWeb Service Mocking是武器库一个非常有用的工具。这是解决“如果没有Web服务如何创建针对性的Web服务测试”问题的办法。Web Service Mocking将在这里派上用场。它允许你实际的Web服务产生之前,创建近似或模拟的Web Service。在本教_soapui设置成中文

Swift 包管理器 (SPM):管理 iOS 中的依赖关系_ios spm-程序员宅基地

文章浏览阅读845次,点赞29次,收藏7次。Swift 包管理器 (SPM):管理 iOS 中的依赖关系_ios spm

SCI论文润色真有必要吗?-程序员宅基地

文章浏览阅读381次,点赞10次,收藏7次。总的来说,sci论文润色虽然不会改变论文的学术内容和贡献,但它能够显著的提升论文的质量和可读性,从而增加论文被接受和引用的机会。在论文投稿前都是需要润色的,特别是英文论文投稿,一定得靠谱。但如果是一些小问题,比如语法语句错误,专业言论不恰当,那么你的文章会在投稿过程中外审评定完以后,也会给你返修意见和修改机会。如果是新作者,或者是对自己的语言能力不那么自信,那么是很有必要的。其他人的视角可能会发现你忽略的错误或不清晰的表达,同时也可以提供有关论文结构和逻辑的反馈意见。关于SCI论文润色的常见方法。

Prometheus监控数据格式的学习-程序员宅基地

文章浏览阅读1.1k次,点赞33次,收藏9次。Prometheus 指标(metrics)的数据形式是一种简单的文本格式(容易通过 HTTP 协议被 Prometheus 服务器拉取)。每一行包含了一个指标的数据,通常包括指标名称、可选的一组标签以及指标的值。Prometheus 的指标数据可以有不同类型,如 Counter、Gauge、Histogram 和 Summary,它们的表示形式会有所不同。

数字图像处理(10): OpenCV 图像阈值化处理_binarization threshold-程序员宅基地

文章浏览阅读5.6k次,点赞26次,收藏43次。目录1 什么是阈值化-threshold()2 二进制阈值化3 反二进制阈值化4 截断阈值化5 反阈值化为06 阈值化为07 小结参考资料1 什么是阈值化-threshold()图像的二值化或阈值化 (Binarization)旨在提取图像中的目标物体,将背景以及噪声区分开来。通常会设定一个阈值,通过阈值将图像的像素划分为两类:大于阈值的..._binarization threshold

随便推点

使用安卓模拟器时提示关闭hyper-v_hyperv影响 模拟器-程序员宅基地

文章浏览阅读1.6w次。本电脑是宏碁传奇X,cpu是r7 5800u,显卡rtx3050;使用了雷电、mumu两款安卓模拟器,雷电启动报错g_bGuestPowerOff fastpipeapi.cpp:1161,使用了网上的所有方案都不行,包括开启VT(amd开启SVM),命令关闭hyper-v服务等;尝试mumu模拟器,安装时支持vt项检测不通过,后来发现mumu模拟器在amd的cpu上只支持32位版,换装32位版检测通过,但是只要打开模拟器就提示需要关闭hyper-v,我已经确认关闭后,启动依旧这样提示,查找了网上很_hyperv影响 模拟器

【大厂秘籍】系列 - Mysql索引详解-程序员宅基地

文章浏览阅读564次。MySQL官方对索引定义:是存储引擎用于快速查找记录的一种数据结构。需要额外开辟空间和数据维护工作。● 索引是物理数据页存储,在数据文件中(InnoDB,ibd文件),利用数据页(page)存储。● 索引可以加快检索速度,但是同时也会降低增删改操作速度,索引维护需要代价。

CSS实现当鼠标停留在一个元素上时,使得两个元素的样式发生改变_css鼠标悬浮修改其他元素样式-程序员宅基地

文章浏览阅读825次。使用兄弟选择器实现同时改变两个元素的样式_css鼠标悬浮修改其他元素样式

文献学习-40-基于可迁移性引导的多源模型自适应医学图像分割-程序员宅基地

文章浏览阅读4.8k次,点赞32次,收藏43次。香港中文大学袁奕萱教授团队提出了一种名为多源模型自适应 (MSMA) 的新型无监督域适应方法。MSMA 旨在仅利用预训练的源模型(而非源数据)将知识迁移到未标记的目标域,从而实现对目标域的有效分割。

(4)FPGA开发工具介绍(第1天)-程序员宅基地

文章浏览阅读8.8k次。(4)FPGA开发工具介绍(第1天)1 文章目录1)文章目录2)FPGA初级课程介绍3)FPGA初级课程架构4)FPGA开发工具介绍(第1天)5)技术交流6)参考资料2 FPGA初级课程介绍1)FPGA初级就业课程共100篇文章,目的是为了让想学FPGA的小伙伴快速入门。2)FPGA初级就业课程包括FPGA简介、Verilog HDL基本语法、Verilog HDL 入门实例、FPGA入门实例、Xilinx FPGA IP core设计、Xilinx FPGA原语与U_fpga开发工具

js中的定时器如何使用_js定时器用法-程序员宅基地

文章浏览阅读1.4k次。JS提供了一些原生方法来实现延时去执行某一段代码,下面来简单介绍一下setTiemout、setInterval、setImmediate、requestAnimationFrame。首先,我们先来了解一下什么是定时器:JS提供了一些原生方法来实现延时去执行某一段代码下面来简单介绍一下setTimeout() :在指定的毫秒数后调用函数或计算表达式。setTimeout(code,millisec,lang)参数 描述code 必需。要调用的函数后要执行的 JavaScript 代码串。_js定时器用法

推荐文章

热门文章

相关标签