秋枫润鋫 發表於 2020-11-9 16:04:00

从零开始搭建 PHP 原生环境(Windows 篇)

<p></p><div class="toc"><div class="toc-container-header">目录</div><ul><li>序</li><li><span id="download">相关配置下载</span></li><li>背景</li><li>测试环境</li><li>安装之前的注意事项</li><li>Apache 安装与配置<ul><li>Apache 配置文件(<code>Apache24/conf/httpd.conf</code>)</li><li>虚拟主机配置文件 (<code>Apache24/extra/httpd-vhosts.conf</code>)</li></ul></li><li>PHP 安装与配置<ul><li>下载 PHP</li><li>Thread Safe 和 Non Thread Safe 的 区别</li><li>配置 <code>php.ini</code></li><li>检查配置</li><li>安装 Apache 服务并启动</li></ul></li><li>MySQL 安装<ul><li>下载 MySQL 最新版</li><li>新建 <code>My.ini</code> 配置文件</li><li>安装 MySQL 服务并启动</li></ul></li><li>一些问题</li><li>相关脚注解释</li></ul></div><p></p>
<h2 id="序">序</h2>
<p>PHP 环境,是 HTTP 服务器、PHP 和 数据库软件的集合体,一般可以简写成 <strong>LAMP</strong><sup class="footnote-ref"></sup>,即 <code>Linux + Apache + MySQL+ PHP</code> 组合而成。</p>
<p>通常一般学习或者小型项目,可以直接使用 <em>集成环境</em> 形如:PHPStudy ,XAMPP 诸如此类的 “All in One” 环境。<br>
但如果需要进行大型项目或者对配置文件有较高 DIY 需求,也允许直接按模块<sup class="footnote-ref"></sup>进行安装配置,本文按 Windows 10 环境进行原生模块安装 PHP 环境。</p>
<h2 id="相关配置下载"><span id="download">相关配置下载</span></h2>
<p>如果想直接套用本文的配置,也提供链接下载:蓝奏云</p>
<blockquote>
<p>PHP 8.0 版本发布,本文编写的配置环境是 7.4,只需要小部分修改就可以使用。</p>
</blockquote>
<h2 id="背景">背景</h2>
<blockquote>
<p>编者刚开始学习 PHP 时用的是 PHPStudy,之后接触到许多集成环境,虽然各有千秋、百家争鸣,总觉得集成环境有一种“束缚”捆绑,直接从官网下载最新版使用,切实地从配置文件入手,让人安心许多。</p>
</blockquote>
<h2 id="测试环境">测试环境</h2>
<ul>
<li>Windows 10 20H2 专业版 x64 (19042.572)</li>
<li>Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz</li>
<li>Hyper Terminal (可选)</li>
<li>默认环境安装在 <code>D:\PHPEnv\</code>目录下</li>
</ul>
<h2 id="安装之前的注意事项">安装之前的注意事项</h2>
<p>涉及 Windows 服务的安装,可能需要 VC15 运行库,可以在微软官网按需下载,也可以直接安装 运行库合集。</p>
<h2 id="apache-安装与配置">Apache 安装与配置</h2>
<p>Apache 官网 只提供 windows 版的源码,不提供二进制可执行文件 <sup class="footnote-ref"></sup>,我们可以去 Apache Haus 下载二进制文件进行安装。</p>
<p><img src="https://img2020.cnblogs.com/blog/1508886/202011/1508886-20201109134908518-1018893033.png"></p>
<p>点击 <code>Download Locations</code>下任意一个图标即可下载,注意 32 位和 64 位的区别<sup class="footnote-ref"></sup>,一般新 CPU 大多数是 64 位 CPU,如编者的 i5 7代核心是 64 位 CPU,可以兼容 32位 的程序。</p>
<p>得到一个 zip压缩包,形如:</p>
<p><img src="https://img2020.cnblogs.com/blog/1508886/202011/1508886-20201109134941594-728931090.png"></p>
<p>将 <code>Apache24</code> 目录解压到 <code>D:\PHPEnv</code> 下,环境根目录可以任意指定,需要注意目录路径<strong>不允许出现中文</strong>。</p>
<h3 id="apache-配置文件apache24confhttpdconf">Apache 配置文件(<code>Apache24/conf/httpd.conf</code>)</h3>
<p>由于 Apache 配置文件过于冗长,具体详细调教方法可以参考其他文章,这里展示缩减后的配置文件(这里只展示主要部分,完整配置请下载使用,具体请参看 相关配置下载)。</p>
<pre><code class="language-ini"># Apache24.conf file

# General Settings
Define SRVROOT "D:/PHPEnv/Apache24"# 定义Apache 根目录
ServerRoot "${SRVROOT}"
ServerName localhost # 服务名
Define ENABLE_TLS13 "Yes"
Listen 80 # 监听80端口,如果被占用可以使用 8080 端口

# PHP74 Config
# PHP 8.0 修改为 php8apache2_4.dll
LoadModule php_module "D:/PHPEnv/PHP74/php7apache2_4.dll" # 定义 PHP7 模块路径
AddType Application/x-httpd-php .php # 添加 PHP格式
PHPIniDir "D:/PHPEnv/PHP74" #定义 PHP 根目录

&lt;Directory /&gt; # 具体配置含义参考其他文章
    AllowOverride all
    Options Indexes FollowSymLinks
    Require all granted
&lt;/Directory&gt;

&lt;Directory "H:/WWW"&gt; # 定义网站根目录
    AllowOverride all
    Options Indexes FollowSymLinks
    Require all granted
&lt;/Directory&gt;

&lt;IfModule dir_module&gt;
    DirectoryIndex index.html index.php index.htm
&lt;/IfModule&gt;

&lt;Files ".ht*"&gt;
    Require all granted
&lt;/Files&gt;


# Virtual hosts
Include conf/extra/httpd-vhosts.conf # 启用虚拟主机文件
</code></pre>
<h3 id="虚拟主机配置文件-apache24extrahttpd-vhostsconf">虚拟主机配置文件 (<code>Apache24/extra/httpd-vhosts.conf</code>)</h3>
<p>为了方便,将网站根目录映射成虚拟主机,原是允许一个服务器运行多个网站的设计。</p>
<pre><code class="language-ini">&lt;VirtualHost *:80&gt;
ServerAdmin localhost
DocumentRoot "H:/WWW"
ServerName localhost
&lt;Directory "H:/WWW"&gt;
    Options Indexes FollowSymLinks Includes ExecCGI
&lt;/Directory&gt;
&lt;/VirtualHost&gt;
</code></pre>
<h2 id="php-安装与配置">PHP 安装与配置</h2>
<h3 id="下载-php">下载 PHP</h3>
<p>由于 Apache 的 安装需要事先配置好 PHP,前往 windows.php.net 下载最新版。</p>
<p>近期发布了 PHP 8.0,本文撰写时版本还未发布,所以只介绍 7.4 版。</p>
<p><img src="https://img2020.cnblogs.com/blog/1508886/202011/1508886-20201109135040153-1601259781.png"></p>
<h3 id="thread-safe-和-non-thread-safe-的-区别">Thread Safe 和 Non Thread Safe 的 区别</h3>
<p>参考原文:</p>
<blockquote>
<p><strong>TS</strong> refers to multithread capable builds. <strong>NTS</strong> refers to single thread only builds. Use case for <strong>TS</strong> binaries involves interaction with a multithreaded <strong>SAPI</strong> and PHP loaded as a module into a web server. For <strong>NTS</strong> binaries the widespread use case is interaction with a web server through the FastCGI protocol, utilizing no multithreading (but also for example CLI).</p>
</blockquote>
<p>大致意思是 TS 版以模块 (moudule) 方式加载到网站服务器(Apache),NTS 版通过 <code>FastCGI</code> 协议与网站服务器建立联系。前者大多应用于 Apache,后者搭配 Nginx 使用,本文使用 Thread Safe 版以模块形式使用 PHP(上图 <code>VC15 x64 Thread Safe</code>)。</p>
<p>下载后如图:</p>
<p><img src="https://img2020.cnblogs.com/blog/1508886/202011/1508886-20201109135135003-476172231.png"></p>
<p>将压缩包所有文件解压到 <code>D:\PHPEnv\PHP74</code>,路径与 <code>httpd.conf</code> 配置要一致。</p>
<h3 id="配置-phpini">配置 <code>php.ini</code></h3>
<p>在 PHP根目录(<code>PHP74</code>)新建 <code>php.ini</code>,或者复制 <code>php.ini-development</code> 重命名为 <code>php.ini</code>,右键选择<code>编辑</code>进入配置文件,同样由于篇幅限制只展示一部分主要配置,具体请参看 相关配置下载。</p>
<pre><code class="language-ini">
engine = On                           # 启动引擎
short_open_tag = Off                  # 关闭短标签
max_input_time = 60
memory_limit = 128M
error_reporting = E_ALL                        # 错误报告开启全部提示
post_max_size = 2048M                        # POST 最大文件大小
default_mimetype = "text/html"
default_charset = "UTF-8"                # 默认文件编码
extension_dir = "./"
extension_dir = "D:/PHPEnv/PHP74/ext"   # PHP 插件路径
enable_dl = Off
upload_max_filesize = 2048M                # 上传最大文件大小
max_file_uploads = 20

extension=curl
extension=fileinfo
extension=gd2
extension=mbstring
extension=mysqli
extension=pdo_mysql
extension=sockets


date.timezone = Asia/Shanghai          # 默认时区设置(中国上海)


SMTP = localhost
smtp_port = 25
mail.add_x_header = Off


mbstring.language = Chinese             # 检查字数语言(中文)
</code></pre>
<h3 id="检查配置">检查配置</h3>
<p>管理员身份打开 Hyper Terminal 或 命令提示符(任意一个 Terminal 都可以),<code>cd</code> 命令跳转到 <code>Apache24\bin</code>,Windows 跳转盘符命令 <code>D:</code> (D 是目标盘符,其他形如 <code>C:</code> <code>E:</code>,参考机器配置)。</p>
<p>检查 Apache 配置 <code>httpd -t</code>,显示 <code>Syntax OK</code> 说明配置无误。</p>
<h3 id="安装-apache-服务并启动">安装 Apache 服务并启动</h3>
<p><code>httpd -k install -n Apache24</code> 进行安装,-n 后面跟服务名(可以自己定义),不填默认为 <code>Apache2.4</code></p>
<p><img src="https://img2020.cnblogs.com/blog/1508886/202011/1508886-20201109135208983-1345497985.png"></p>
<p><code>net start Apache24</code> 开启服务。</p>
<p>至此 Apache 和 PHP 已经安装完成,在网站根目录(<code>H:\WWW</code>)新建 <code>phpinfo.php</code>,</p>
<p>输入 <code>&lt;?php phpinfo(); ?&gt;</code> 保存,进入浏览器输入 <code>localhost\phpinfo.php</code> 查看效果。</p>
<p><img src="https://img2020.cnblogs.com/blog/1508886/202011/1508886-20201109135232455-652378155.png"></p>
<h2 id="mysql-安装">MySQL 安装</h2>
<h3 id="下载-mysql-最新版">下载 MySQL 最新版</h3>
<p>前往 MySQL官网 下载 MySQL,官网提供两种安装方式:</p>
<ul>
<li>
<p>安装器<sup class="footnote-ref"></sup> <strong>MySQL Installer for Windows.msi</strong></p>
</li>
<li>
<p>归档压缩包 <strong>Windows (x86, 64-bit), ZIP Archive</strong></p>
<p>本文选择压缩包安装,选择右边 <code>download</code> 按钮下载</p>
</li>
</ul>
<p>下载后得到如图文件内容:</p>
<p><img src="https://img2020.cnblogs.com/blog/1508886/202011/1508886-20201109155615661-404347875.png"></p>
<p>上图 <code>A temporary password is generated for root@localhsot: </code>除去空格就是初始密码,需要记住。</p>
<p>继续输入 <code>mysqld --install MySQL80</code> 安装服务,提示 <code>Service successfully installed</code> 表示安装成功。</p>
<p>输入 <code>net start MySQL80</code> 启动数据库服务。</p>
<p>输入 <code>mysql -u root -p</code> 进入 MySQL CLI,回车提示输入<strong>初始密码</strong>,进行密码设定:</p>
<p><img src="https://img2020.cnblogs.com/blog/1508886/202011/1508886-20201109155634016-1537925317.png"></p>
<p>输入 <code>ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';</code></p>
<p>密码自己写,提示 <code>Query OK, 0 rows affected (0.10 sec)</code> 说明已经完成修改。</p>
<p>输入 <code>exit;</code> 退出,再次进入就可以使用新密码了。</p>
<p>至此,所有配置已完成,可以使用了。</p>
<h2 id="一些问题">一些问题</h2>
<p>一般注意 <code>以管理员身份运行</code> 打开终端,事先安装 VC15 就没有问题了。</p>
<h2 id="相关脚注解释">相关脚注解释</h2>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p><strong>LAMP</strong> 只是一种简写形式,依操作系统和服务软件不同可以有形如 <code>WAMP</code> <code>LNAMP</code>等情况 ↩︎</p>
</li>
<li id="fn2" class="footnote-item"><p>模块指将 <strong>LAMP</strong> 各部件独立出来的一种说辞,相对于 “集成环境” 而言,后面的原生模块也指此类说法 ↩︎</p>
</li>
<li id="fn3" class="footnote-item"><p>网站原文:The Apache HTTP Server Project itself does not provide binary releases of software, only source code. Individual committers <em>may</em> provide binary packages as a convenience, but it is not a release deliverable.If you cannot compile the Apache HTTP Server yourself, you can obtain a binary package from numerous binary distributions available on the Internet. ↩︎</p>
</li>
<li id="fn4" class="footnote-item"><p>32 位环境和 64 位环境的区别,参考维基百科有如下解释:从 32 位到 64 位架构的改变是一个根本的改变,因为大多数操作系统必须进行全面性修改,以获取新架构的优点。其它软件也必须进行移植,以使用新的性能;较旧的软件一般可借由硬件兼容模式(新的处理器支持较旧的 32 位版本指令集)或软件模拟进行支持。或者直接在 64 位处理器里面实现 32 位处理器核心(如同 Intel 的 Itanium 处理器,其内含有 x86 处理器核心,用来运行 32 位 x86 应用程序)。支持 64 位架构的操作系统,一般同时支持 32 位和 64 位的应用程序。 ↩︎</p>
</li>
<li id="fn5" class="footnote-item"><p>MySQL 安装器的方式也适合小白使用,具体安装方式参考其他文章。 ↩︎</p>
</li>
</ol>
</section><br><br>
来源:https://www.cnblogs.com/rihciowei/p/phpenv-in-windows.html
頁: [1]
查看完整版本: 从零开始搭建 PHP 原生环境(Windows 篇)