PHP之旅——出发(php+apache+MySQL)

Posted 江拥羡橙Q

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP之旅——出发(php+apache+MySQL)相关的知识,希望对你有一定的参考价值。

目录

前言

本文详细介绍php+apache+mysql在window下的独立版本安装,这样能让你更了解它们的工作原理,以及后期能熟悉配置出自己所需的个性化环境,我们一起来看看吧~

准备

  1. php-5.4.8
  2. Apache-2.2.22
  3. mysql-5.5.22
  4. Navicat-8.1 for MySQL(操作MySQL的工具
  5. D盘根目录下建立www文件夹(也可在其它盘,本文案例默认D盘

php安装

(*安装路径与修改内容路径必须一致)
输入文件:php-5.4.8-Win32-VC9-x86.zip

操作步骤

  1. 解压到本地D:/php目录下

  2. 在php文件夹中找到php.ini-development文件,把文件名称修改为php.ini

  3. 修改php.ini文件

    修改内容:

  • ctrl+f查找php_curl去掉这行代码前面的分号
; extension=php_curl.dll
  • ctrl+f查找mysql去掉这两行代码前面的分号
;extension=php_mysql.dll
;extension=php_mysqli.dll
  • ctrl+f查找php_gd2去掉这行代码前面的分号
;extension=php_gd2.dll
  • ctrl+f查找php_openssl去掉这行代码前面的分号
;extension=php_openssl.dll
  • ctrl+f查找php_pdo去掉这行代码前面的分号
;extension=php_pdo_mysql.dll

Apache安装

输入文件:httpd-2.2.22-win32-x86-no_ssl.msi
操作步骤

  1. 点击安装
  2. Next
  3. Server information信息填写
    Network Domain: 指定服务
    Server Name: 指定服务名称
    Administrator‘s Email Addresss:指定邮箱
  4. 自定义安装路径
    D:\\Apache2.2
    Next–>install–>finish

MySQL安装

  1. D盘根目录下建立MySQL文件夹
  2. 输入MySQL安装包mysql-5.5.22-win32.msi
  3. 双击进行安装


点击Next进行下一步安装


选择安装类型,有Typical(默认)Complete(完全)Custom(用户自定义)三个选项,我们选择Custom

Location选D盘下的MySQL,然后Next


正在安装中…,请稍候,直到出现下面的界面

–》Next

现在软件安装完成了,出现上面的界面,这里有一个很好的功能,mysql配置向导,不用向以前一样,自己手动乱七八糟的配置my.ini了。
–》接下来

点击“Next”继续下一步继续进行

选择配置方式,Detailed Configuration(手动精确配置)Standard Configuration(标准配置),我们选择Detailed Configuration

选择服务器类型,Developer Machine(开发测试类,mysql占用很少资源)Server Machine(服务器类型,mysql占用较多资源)Dedicated MySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源),大家根据自己的类型选择了,一般选Server Machine,不会太少,也不会占满。

选择mysql数据库的大致用途,Multifunctional Database(通用多功能型,好)Transactional Database Only(服务器类型,专注于事务处理,一般)Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional),我这里选择了Transactional Database Only,按“Next”继续

InnoDB Tablespace进行配置,就是为InnoDB数据库文件选择一个存储空间,如果修改了,要记住位置,重装的时候要选择一样的地方,否则可能会造成数据库损坏,当然,对数据库做个备份就没问题了,这里不详述。我这里没有修改,使用用默认位置,直接按“Next”继续。

选择网站的一般mysql访问量,同时连接的数目,Decision Support(DSS)/OLAP(20个左右)Online Transaction Processing(OLTP)(500个左右)Manual Setting(手动设置,自己输一个数),我这里选Online Transaction Processing(OLTP),按“Next”继续。

是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql数据库了,我这里启用,把前面的勾打上,Port Number:3306,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样MySQL就不会允许细小的语法错误。这里使用标准模式,因为它可以降低有害数据进入数据库的可能性。按“Next”继续。

西文编码,这里选择第三个,然后在Character Set那里选择或填入gbk
按 “Next”继续。

选择是否将mysql安装为windows服务,还可以指定Service Name(服务标识名称),是否将mysql的bin目录加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysql.exe -uusername -ppassword;”就可以了,不用指出mysql.exe的完整地址,很方便),我这里全部打上了勾,Service Name不变。按“Next”继续。

这一步询问是否要修改默认root用户(超级管理)的密码,我们这里修改了密码。
“New root password”:root(我们这里设置数据库密码为root)
“Confirm(再输一遍)”:root
“Enable root access from remote machines(是否允许root用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。
最后“Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,这里不用勾了,设置完毕。
按“Next”继续

确认设置无误,如果有误,按“Back”返回检查。按“Execute”使设置生效

然后打开cmd,输入命令行输入net start mysql,提示服务名无效,查看服务列表。已经启动的话,则MySQL服务安装成功。

net start mysql

回车

Navicat安装(附)

我们还需要装一个操作MySQL的工具Navicat for MySQL
拿到Navicat for MySQL安装包navicat8_mysql_cs.exe,双击进行安装


选择安装目录,点击“下一步”。





–》注册成功

点击连接创建一个新连接:

  1. 输入连接名
  2. 密码:root
    –》确定


    所有安装完成!

Apache+php整合

修改Apache里conf-》httpd.conf文件

  • 最底部添加代码
LoadModule php5_module "D:/php/php-5.3.5/php5apache2_2.dll"
PHPIniDir "D:/php/php-5.3.5"
AddType application/x-httpd-php .php .phtml

注:D:/php/php-5.3.5指向php安装路径
查看端口
一般默认为80,若占用,修改为其它
Listen 80(此处修改端口号)

  • 修改php里php.ini文件,去掉这行代码前面的分号,并且"ext"修改为“D:/php/ext”
    ctrl+f查找extension_dir
; extension_dir = "ext"  

D:/php为php文件包地址

验证Apache+php

在www文件下建立index.php文件
文件内容为:

<?php 
phpinfo();
?>

Apache重启,浏览器中输入http://127.0.0.1/index.php
出现下图版本表格,说明安装成功。

完成!

六年代码两茫茫,不思量,自难忘
6年资深前端主管一枚,分享技术干货,项目实战经验,面试指导
关注博主不迷路~

《香肠是怎么做的》apache/php/mysql交互之旅

【中文标题】《香肠是怎么做的》apache/php/mysql交互之旅【英文标题】:"How the sausage is made" tour of apache/php/mysql interaction 【发布时间】:2010-11-01 13:25:31 【问题描述】:

我无法理解 apache/php/mysql 堆栈如何在低级别工作(包括与浏览器的交互)。在某个地方(一本书、一个网站等)是否有一个很好的描述,它将引导我完成整个路径并解释如何从浏览器开始请求 url、发送 http 请求、apache 如何与 php 对话、php 如何与mysql(持久和非持久连接)等等等等。一本书,一篇文章?每个单独的组件都有很多文档,但我找不到“演练”。

到目前为止我看到的解释都是非常高级的:看,这是一头快乐的牛,它去了牛科大学,看 - 都是超市货架上的收缩包装。我需要的是香肠农场/屠宰场/卡车/工厂之旅,从奶牛授精开始:)

[更新] 到目前为止,除了阅读源代码之外,我还没有找到更好的方法来了解这些内容。

【问题讨论】:

好问题。我曾经读过的一本 ASP.NET 书经历了同样的概述(他们称之为应用程序请求生命周期),并且在整个开发过程中这些信息一直困扰着我。 是的,这正是我要找的。​​span> 我怀疑这将是一个不同的答案,具体取决于您是否拥有 mod_php 或 FastCGI 我无法理解你的问题.. 你能不能再用汽车类比再试一次? 【参考方案1】:

PHP and MySQL by example 有一个非常基本的过程图,我想你可能已经理解了。

不过,要获得比那张图片更深入的讨论是一个相当长的讨论。具有讽刺意味的是,您可以阅读我刚刚链接的书以获得很好的描述。如果您有更具体的问题,我建议为他们打开新问题。享受吧!

【讨论】:

【参考方案2】:

我发现一个网站至少有一部分内容来自 George Schlossnagle 的高级 PHP 编程一书。

该网站位于:http://php.find-info.ru/php/016/toc.html。具体来说,The PHP Request Life Cycle 部分包含很多细节,包括一些源代码和图表。

免责声明: IANAL,但考虑到这本书仍然是listed on Amazon,上面链接的内容可能违反了各种规范、规则和/或法律。我无意扩散或纵容非法或盗版材料,所以如果是这种情况,请删除上述链接。

【讨论】:

【参考方案3】:

你是对的,因为有整本书都写了这一切如何结合在一起,这里有一个链接到它涉及主要部分的“演练”。

http://computer.howstuffworks.com/web-server.htm

希望对你有帮助

【讨论】:

好吧,其实不然。这只是一些非常高级的手势。【参考方案4】:

最好的做法是获得一本关于 LAMP 堆栈的好书。

快速响应(如果您觉得需要,请询问更多) 浏览器通过 HTTP 协议联系 Web 服务器 服务器生成(让我们暂时离开)一个 html 结果并将其发回。 每个浏览器都只理解 http 协议(为了分析)。

现在图标、图像、javascript 等项目只是从 apache 服务器读取并“复制”到浏览器。在纯 html 文件中相同。 不同之处在于 php 文件(我在这里过于简单化了)。这些被传递给 php 模块,并且(模块的)响应将被发送回浏览器。

php 模块是理解 php 的。 我们在这里在一起吗?如果是,那么: PHP 脚本可能(或可能不需要)需要来自 MySQL 服务器的数据,它必须连接获取它们或操作它们等。

总结:这些操作中的每一个都是在不同的流程级别中单独完成的。这就是它“简单”的原因。 如果您想要更具体的内容,请询问更多信息。

【讨论】:

“最明显的答案是,找一本关于 LAMP 堆栈的好书。”你知道这样的书吗? 我指的是 LAMP 堆栈的内部,而不是如何使用 PHP/MySQL。 您需要定义“内部”。 LAMP 堆栈没有内部结构,但它的每个部分都是单独的:Web 服务器、Php 模块、Php 语言、MySQL 服务器,也许还有关于它们如何通信的 linux/os 内核。因此,如果您想单独了解每一项的更多信息,您应该检查特定于该信息的信息来源(例如 apache 的工作原理)。 您说一本关于 LAMP 堆栈的好书会回答 OP 关于“香肠是如何制作的”的问题。这就是我要找的。​​span> 【参考方案5】:

据我了解,apache 收到请求,并根据您的 .htaccess 或配置选项确定如何处理它。然后,如果需要,它会将这个请求传递给 PHP 进行解析。 PHP 对代码进行两次扫描,第一次是预解析,这会找出明显的缺陷并在解析页面之前在顶层运行函数(忽略 if 语句、循环、包含、eval 或基于 lamda 的函数中的任何函数)真的。我相信用 echo 完成的任何事情都会作为标准输出流返回,并返回给 apache。如果 apache 超时,它会向 PHP 发送 kill 信号,PHP 会关闭对象,如果需要,在退出之前打印错误消息。一旦页面退出,apache 往往会返回页眉并返回页面。

不过,我很想了解更多,所以如果有人可以更好地解释它或对我的答案进行更正/扩展,我很想听听。

【讨论】:

以上是关于PHP之旅——出发(php+apache+MySQL)的主要内容,如果未能解决你的问题,请参考以下文章

apache+php???????????????

win7系统,apache2.2下添加PHP5的配置详解

Linux+Apache+PHP+MySQL服务器环境(CentOS篇)

在CentOS上搭建PHP服务器环境

Ubuntu18.08+php7 apache2不解析php文件解决方法

为PHP开发搭建环境