1. Apache
1.1 Windows 端安装 Apache
Windows 端安装 (Apache Haus)[https://www.apachehaus.com/cgi-bin/download.plx],选择 x64 版本,下载完成之后是一个压缩包:
将文件解压到任意一个工作目录,如:D:/Apache24
,之后打开 Apache 目录下的 /conf/httpd.conf
,修改配置文件:
- 初次修改必须要修改
Define SRVROOT
,将其更改为我们解压后所放置的工作目录; Listen
选项为服务的开启的端口,默认为80
,如果该端口被占用,需要改变端口号才可以启动 Apache 服务。
之后进入 /bin
目录下,使用有管理员权限的 cmd
或者 powershell
,输入 httpd.exe
即可开启服务。
Windows 端的 apache 目录结构:
1 | ├─bin # windows 可执行二进制文件 |
之后可以将 Apache 安装为系统服务,那样便可以使用 bin
目录下的 ApacheMonitor.exe
工具,一键开启与重启 Apache 服务器(注意这里必须使用管理员权限运行命令行程序,并保证设置的端口没有被占用):
1 | httpd -k install |
1.2 Apaceh 常用指令
查看模块状况:
1 | httpd.exe -M |
验证配置文件:
1 | httpd -t |
Ubuntu 环境下需要使用
apachectl
替代httpd
2. PHP
2.1 PHP 环境配置
上官网安装适用于 Windows 的 PHP,注意要下载 Thread Safe 版本,否则没有 Apache 的模块。
下载同样是一个压缩包格式的文件,将其解压并放置到自定的目录,其目录结构为:
1 | ├─dev |
执行 php 文件:
1 | php.exe -f /dirName/fileName.php |
将 php 环境的目录设置到系统 PATH 中,即可直接编译运行 php 文件:
1 | // helloworld.php |
1 | $ php helloword.php |
2.2 Apache 加载 PHP 模块
打开 Apache 配置文件,在 LoadModule 处添加模块路径:
1 | # httpd.conf |
之后可以通过 httpd -t
来检查配置文件是否可用,同时使用 httpd -M
可以看到新增的模块:
1 | php7_module (shared) |
除此之外,我们还要显式配置 Apache 支持读取 php 文件:
1 | # httpd.conf |
此时已可以将 php 文件放置到 Apache24/htdocs/
目录下,服务器即可处理 php 文件了。
3.3 Apache 加载 PHP 配置文件
由于 Apache 是运行 php 的环境,所以 php 的相关设置比如加载模块,需要让 Apache 读取,因此我们要让 Apache 去加载 PHP 的配置文件。
以下配置仅适用于 Windows 平台
在 Apache 配置文件中添加:
1 | # httpd.conf |
由于 PHP 环境下载下来之后,相关的配置文件并没有进行初始化操作,我们需要在 PHP 目录下创建一个 php.ini
文件,我们可以将 php.ini-development
复制一份并重命名为 php.ini
完成初始化操作。
之后我们可以在 apache 静态文件目录下(windows 平台在为 Apache 目录下的 htdocs 文件夹)中创建一个 info.php
,输入:
1 | // info.php |
访问 http://localhost/env.php
既可看到当前的 php 环境配置详情:
php 的很大一个好处就是可以热更新,无需重启服务器修改文件即可生效,当然加载模块还是要重启服务器的。
3.4 PHP 选择加载模块
通过以上的设置,Apache 已经能够处理 PHP 文件了,但是 PHP 还有众多扩展包可以供我们使用,比如 mysqli
扩展可以帮助我们连接 myslq,只有我们启用了这些扩展,才可以在 PHP 中使用这些服务。
这里以启用 myslqi
扩展为例,打开 php.ini
文件,在 ;extension=mysqli
这一行取消掉前面的 ;
即启用该插件:
1 | ;php.ini |
在 php7.3 以下版本,
mysqli
可能被写为php_mysqli.dll
,这里也可以填写一个绝对路径来指向插件的存放位置。
在 Windows 平台上还需要额外配置 PHP 扩展的路径,如:
1 | ;php.ini |
Ubuntu 可以通过查看 phpinfo 来获取插件的默认路径。
3.5 设置 PHP 时区
系统默认的时区并不安全,需要手动切换为当前国家的时区:
1 | date.timezone = RPC |
3.6 Linux 系统下的注意事项
Linux 系统下可能会安装多个 PHP 版本,可以用
php --verison
查看当前 php 版本。PHP 的目录为
/etc/php
,在该目录下可以看到多个 PHP 版本。PHP 命令行环境下与 Apache 环境下加载的
php.ini
文件是不一样的。- 命令行环境下执行的是
/etc/php/[php_version]/cli/php.ini
,命令行中使用php -i | grep php.ini
可以查看。 - Apache 环境下加载的是
/etc/php/[php_version]/cli/php.ini
,php 文件中使用phpinfo()
方法输出当前环境可以查看。
- 命令行环境下执行的是
模块位置在
/usr/lib/php/[php_api_version]/
目录下存放。- 该位置可以按照 windows 上的设置方式显式指定(不推荐更改)。
- 该位置不同的 php 版本不一样,具体看当前的 PHP API 的值。
- 命令行环境与 Apache 环境中对于扩展的路径是相同的,命令行环境下使用
php -i | grep extension_dir
查看。
如果安装有多个版本的 php 可以使用
php[version]
来执行不同版本的 php ,如php7.2 --version
。
可以在
/usr/bin
目录下查看当前所可执行的 php 版本
- 如果要手动安装扩展,需要安装当前版本的
dev
开发工具,比如 php7.3 需要安装php7.3-dev
。- dev 工具中的 phpize 可以用来编译扩展,与多版本的 php 使用类似,可以使用
phpize[version]
来切换不同版本的编译工具 - dev 工具中可以调用
php-config
来查看当前开发工具对应的 php 环境,如果当前设备安装了php7.3
而 dev 工具是php7.2-dev
,那么当前的环境只会是 php7.2 的环境,响应的编译的文件也会编译到php7.2
的扩展路径中。
- dev 工具中的 phpize 可以用来编译扩展,与多版本的 php 使用类似,可以使用