我使用的笔记本电脑运行于 Windows 10 家庭单语言 64 位操作系统
我已在此笔记本电脑上安装了最新版本的 XAMPP 预配置安装程序。
这已在我的笔记本电脑上安装了 PHP 7.2.12 和 Apache/2.4.37 (Win32)。
我在 PHP 手册中看到以下注释:
注:
Apache Web 服务器在启动时将目录更改为根目录, 导致 PHP 尝试从根文件系统读取 php.ini,如果 存在。
这篇笔记在我心中引起了一些疑问,如下:
我希望有人能用一些好的解释来消除我的上述疑问,这些解释应该是简单、清晰的语言,并且对我来说应该很容易理解。
谢谢你。
*nix 系统上的“Root”指的是顶级文件夹。看起来像这样:/
所以第一个问题的答案是:是的,根文件夹只是指安装操作系统的顶级文件夹,在默认的 Windows 设置中是 C:\ 文件夹。
第二个问题的答案更加棘手,因为我不确定 Apache 在 Windows 上的行为方式。 PHP 手册页上您关心的注释仅涉及 *nix 环境。这是 PHP 和 Apache 的一个长期存在的问题,因为它们都是从 *nix“诞生”的,而这正是它们最熟悉的地方。它们已被移植到 Windows,但这是事后才想到的。如果您要进行大量 PHP 开发,我强烈建议您尽快获取 *nix 开发环境,因为您会不断遇到此类文档不适合 Windows 用户的问题。
我相信 Windows 上的 Apache 默认情况下会在 ServerRoot 文件夹中查找 php.ini 文件,该文件在 httpd.conf 中设置。 (如果我错了,请纠正我!)但是如果您想将 php.ini 文件放在自定义位置,您可以向 httpd.conf 添加这样的行:
PHPIniDir“C:\php\ini”
自 2010 年以来,我一直在 Win Pros 上使用 Apache、PHP、Xdebug、MySql,它是我遇到过的 Windows 上最强大的生态系统之一。如果生产目标是在Linux上,那么在Linux vm上运行很容易,但仍然可以通过共享vm目录在Windows中进行开发。我使用 PhpStorm,它增加了健壮且无脚本的体验。我的服务器非常精简,直接来自 Apache、PHP、XDebug 二进制文件。 MySql 是单独安装的。今天我发现Apache如何在windows中更改目录。我想让相对路径在 php.ini 中工作。 Apache 二进制文件 zip 可以从 apachelounge.com 找到。 windows.php.net 提供 php 二进制文件。将 PHP 8.41 提取到某个目录,例如 c:ersionser841\php841。 Apache 被提取到其同级目录 c:ersions er841\httpd。 它创建一个单独的目录 c: ersions er841\httpd\Apache24 ,在它下面是整个目录和一堆目录。 c:ersionser841\httpd\Apache24 中的目录有特殊含义。 Apache 从目录 c:ersionser841\httpd\Apache24 开始,但随后更改为 c:ersionser841\httpd\Apache24 中。此时它会加载 php.ini,并且 php.ini 中的相对地址是从 Apache24/bin 开始计数的。 PHP 扩展目录将向上三层,然后跳转到 sibiling 目录。 在 php.ini 中,加载程序会理解从 apache bin 开始的行:
extension_dir = ./../../../php_841/ext
这发生在我的电脑上,我检查了双反斜杠也有效:
extension_dir = .\\..\\..\\..\\php_841\ext
系统的根文件夹是C:/Windows。但这与读取php.ini无关,因为通常所有配置文件(php、apache和mysql)每次都会正确读取。大多数情况下,我直接将 xampp 安装在 c:/ 中。 xampp 的路径将是
c:/xampp
并且一切正常。
我还手动单独安装了apache、php和mysql,没有使用wamp或xampp。这些将直接放置在
c:/
下,因此路径将是 c:/php
、c:/Apache24
(对于 Apache 2.4)和 c:/mysql
。所以没关系。