在本教程中,我将向您展示如何使用Apache作为Web服务器在Windows 10计算机上安装PHP 8。
下载必要的文件
您可以从以下网址下载PHP二进制文件:https://windows.php.net/download/。
根据您的Windows类型下载线程安全的32位或64位版本。由于所有版本均已使用VisualStudio 16(2019)进行了编译,因此稍后,您需要在PC上安装合适的Apache二进制文件和“ Microsoft Visual C ++ 2019 Redistributable”程序包。
准备PHP位置
我希望程序位于“程序文件”文件夹中。除此之外,随着时间的流逝,您将安装几个不同版本的PHP。因此,我创建以下目录结构:
为了易于使用,我在开发机器的安全性方面做出了一些牺牲。我向本地用户授予对我的计算机上PHP目录的完全权限。
创建目录后,复制下载的zip文件的内容。
检查PHP是否有效
如前所述,PHP 8是使用Visual Studio 2019编译的。因此,如果您的计算机上未安装适当的Redistributable,则会出现以下错误:
...未找到VCRUNTIME140.dll。..
您可以从Microsoft可再发行文件下载中下载文件
如果一切顺利,则可以从命令行使用PHP。您可以使用以下命令检查安装:php -v
,结果应该是类似的:
为了使使用PHP更加方便,可以将PHP目录放在路径上。单击开始,然后键入env
。从列表中单击“编辑系统环境变量”,然后将出现“系统属性”对话框。单击“环境变量...”,然后从“系统变量”块中选择“路径”。将新的PHP文件夹添加到列表中。
配置PHP
现在,PHP正在运行,但尚未正确配置。在基本级别上配置PHP 8与旧版本没有什么不同。
PHP文件夹包含2个示例配置文件:
- php.ini-production
- php.ini-development
将开发版本复制到与该目录相同的目录php.ini
并打开以进行编辑。您需要设置的是扩展名和会话数据的位置。
您必须将extension_dir
参数设置为有效位置:extension_dir = "c:\Program Files\PHP\php-8.0.0RC2\ext"
extension_dir = "c:\Program Files\PHP\php-8.0.0RC2\ext"
您还必须从列表中取消注释所需的扩展名。通常,curl,gd,mbstring,mysqli,pdo_mysql扩展是复杂的php应用程序所必需的。
extension=curl
extension=gd
extension=mbstring
extension=mysqli
extension=openssl
extension=pdo_mysql
最后,您需要设置保存会话数据的位置:
session.save_path = "w:/tmp"
session.save_path = "w:/tmp"
安装Apache
即使PHP具有内置的Web服务器,生产系统也会使用Apache,Ngnix,Lightspeed等。对于Windows开发环境,Apache是最简单的选择。
您可以从ApacheLounge网站下载最新的Apache Web服务器。根据您的操作系统类型下载32或64位版本。
如前所述,我不喜欢C:根目录中的所有内容,因此我还在Program Files文件夹中为Apache创建了一个目录。不要忘记允许用户权限。
现在,您可以将zip文件的Apache24文件夹的内容复制到新位置。注意确切的目录结构。
与PHP一样,您可以将Apache添加到路径中,但是在这种情况下,您需要添加bin
文件夹。
基本的Apache配置
Apache配置文件位于conf
目录中。主要的配置文件是httpd.conf
。要启动网络服务器,您需要SRVROOT
将配置文件中的服务器root()参数设置为正确的位置,如下所示:
Define SRVROOT "c:/Program Files/Apache/httpd-2.4.46"
ServerRoot "$ {SRVROOT}"
最好设置ServerName
显式设置以防止启动过程中出现问题。由于我们稍后将使用虚拟主机,因此您只需将其设置为localhost:80
ServerName localhost:80
可选步骤-但大多数PHP应用程序通常要求执行此步骤-启用Apache模块。例如,默认情况下禁用mod_rewrite模块,但几乎始终需要该模块。只需取消注释行,您就完成了。
LoadModule rewrite_module modules/mod_rewrite.so
将Apache作为服务安装
要将Apache作为Windows服务安装,您必须以管理员身份打开命令提示符。导航到Apache bin目录并执行以下命令:httpd -k install
然后,您可以使用以下命令启动Web服务器:httpd -k start
允许访问:
如果一切正确,那么您将返回提示,而不显示任何消息。
打开浏览器,然后输入http://localhost
URL。您应该获得类似于以下内容的欢迎页面:
设置虚拟主机
默认文档位置是htdocs
安装目录中的文件夹。但是,这不是最佳的。如果您是开发人员,则可能需要处理多个Web项目。因此,对每个项目都有一个专用的文件夹和URL会很好。例如,如果site1.com
和site2.com
是生产站点,则您可能需要site1.local
和site2.local
带有专用目标文件夹的URL用于开发。
虚拟主机是解决此问题的方法。
同样,将代码与驱动器C分开存储是一个好主意。
例如,您可以创建一个目录结构,如下所示:
现在,您必须配置虚拟主机并启用它。首先,打开httpd.conf
文件,然后取消注释该文件所在的行httpd-vhosts.conf
。
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
然后,打开httpd-vhosts.conf
文件extra
夹中的文件。为您想要的每个项目添加一个条目。的ServerName
,DocumentRoot
以及ErrorLog
是重要的参数,你可以跳过别人。
<VirtualHost *:80>
ServerName site1.local
DocumentRoot "w:/Websites/site1.local"
ErrorLog "w:/Websites/site1.local/error.log"
</VirtualHost>
除此之外,您还必须允许访问这些文件夹,因此Directory
在VirtualHosts条目之前添加具有以下内容的公共块。
您最终的虚拟主机配置文件应如下所示:
<Directory "w:/Websites" >
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
ServerName site1.local
DocumentRoot "w:/Websites/site1.local"
ErrorLog "w:/Websites/site1.local/error.log"
</VirtualHost>
<VirtualHost *:80>
ServerName site2.local
DocumentRoot "w:/Websites/site2.local"
ErrorLog "w:/Websites/site2.local/error.log"
</VirtualHost>
您还需要扩展位于中的Windows主机文件c:\Windows\System32\drivers\etc\hosts
。使用管理特权打开文件进行编辑,然后将以前使用的服务器名称添加到指向本地127.0.0.1 IP地址的文件中。
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.1 site1.local
127.0.0.1 site2.local
将简单的index.html文件放入具有不同内容的网站根目录中,以进行测试。
现在,您可以使用重启Apache httpd -k restart
。如果一切正确,则不会显示错误消息。导航到site1.local和site2.local,您的浏览器应显示相应的HTML内容。
设置Apache以使用PHP 8
设置几乎完成,但是我们尚未配置PHP和Apache一起工作。
首先,我们必须将php扩展名添加到已知的mime类型。为此,请在mime.types
配置文件末尾添加以下行: application/x-httpd-php php
application/x-httpd-php php
要在index.php
请求目录时自动执行,请DirectoryIndex
使用index.php
in扩展属性httpd.conf
。
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
之后,最重要的步骤是加载php模块。为此,请在httpd.conf
文件中指定PHP安装目录和相应的模块。只需将行插入httpd.conf
:
# PHP 8.0
PHPIniDir "c:/Program Files/PHP/php-8.0.0RC2"
LoadModule php_module "c:/Program Files/PHP/php-8.0.0RC2/php8apache2_4.dll"
现在,您可以重新启动apache并检查是否有任何错误。如果一切正常,请在服务器文档根目录中使用一个简单的phpinfo创建一个小的inf.php文件,如下所示:
<?php
phpinfo();
访问site1.local / info.php应该会在浏览器中显示一个PHP信息页面。
故障排除
在“文件无法找到API模块结构‘php8_module’......”的错误消息是一个常见的问题。验证确切地php_module
在LoadModule行中。旧的php7_module
和预期的都不php8_module
是好的。