在Windows 7下打破PHPIniDir?

时间:2009-12-16 05:47:51

标签: php apache apache2 apache-config

我使用带有PHP和MySQL的Apache2在Windows XP机器上运行服务器。我最近升级到Windows 7,但一直无法使用它。 Apache运行良好,PHP可以工作,但我似乎无法使用php.ini文件。

当我将PHPIniDir设置为具有php.ini文件的目录时,Apache服务无法启动。

当我将PHPIniDir设置为没有php.ini文件的目录时,Apache服务就会启动。

当我遗漏PHPIniDir时,Apache服务无法启动。

有没有人找到解决此问题的方法?谢谢!

编辑:

PHPIniDir "C:\Windows" #works(没有php.ini档案)

PHPIniDir "C:\Program Files (x86)\php\"#不起作用(包含php.ini文件)

我在任何给定时间最多启用一个。

7 个答案:

答案 0 :(得分:10)

删除最后一个斜杠:

PHPIniDir "C:\Program Files (x86)\php"

答案 1 :(得分:5)

我有同样的问题..我修好了。使用记事本或任何文本编辑器打开php.ini文件。禁用php.ini文件中的所有扩展名。通过逐个扩展注释,并找出导致问题的扩展名。

答案 2 :(得分:3)

有几个原因:

  • 旧版本的Apache和/或PHP。 Apache 2.2.13 / 2.2.14似乎在Windows 7以及PHP 5.2.11 / 5.3中都能正常工作。
  • 某些PHP扩展可能会导致Apache启动失败。您可以检查Apache的日志文件或在php.ini中启用“display_startup_errors”(当它启用时,您可以使用ApacheMonitor.exe启动或停止Apache服务,如果发生错误,它将显示一条消息)。您也可以禁用所有PHP扩展,如果它有助于逐个启用它们,并查看哪一个导致了问题。
  • Imho,确保您已下载PHP存档并且未使用自动安装程序。根据我的经验,安装人员从未运作良好。您始终可以将两个与PHP相关的指令(PHPIniDir和LoadModule)添加到Apache的配置文件中,并确保PHP目录中包含PHP目录。哦,服务错误也可能是由php2apache库引起的。
  • 检查Apache的路径中是否包含Apache / PHP / MySQL目录。这是一个很好的实用工具:Redmond Path。您可以将以下目录添加到路径中:Apache / bin目录,PHP目录,MySQL / bin目录。这可能有所帮助。

答案 3 :(得分:2)

我遇到了同样的问题,你必须在httpd.conf中指定PHP模块的完整URL。

我找到的所有指南都说如下:

PHPIniDir "C:/Program Files/PHP"
LoadModule php5_module "php5apache2_2.dll"

实际上你需要:

PHPIniDir "C:/Program Files/PHP"
LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll"

答案 4 :(得分:1)

我从未能超越这条线:

  

LoadModule php5_module“C:/ Program Files(x86)/PHP/php5apache2_2.dll”

所以最后在绝望中我创建了一个新文件夹C:/ PHP,将该dll复制到C:/ PHP并将该行更改为

  

LoadModule php5_module“C:/PHP/php5apache2_2.dll”

这是第一次全部奏效!也许它只是不喜欢路径中的空格。或者它可能不喜欢长路径名称。我不知道。这个修复程序可能特定于特定版本的Apache和PHP,但在花了大约20个小时来解决这个问题后,我很沮丧,我不知道这种依赖可能是什么。

答案 5 :(得分:1)

我也有这个问题,但我可以通过禁用php.ini文件中的所有扩展来让Apache再次工作(我在ext文件夹中有所有DLL,但是在php.ini中禁用了它们) 由于我想使用所有的php扩展,我尝试逐个禁用,看看哪些是崩溃的Apache。我也在C:中安装了PHP,以避免“空格/长路径”问题。 最后,这是我的Apache的httpd.conf文件的方式,在PHP的部分:

#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "C:\PHP"
LoadModule php5_module "C:\PHP\php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL

此外,崩溃apache的扩展程序是:

  • php_oci8.dll
  • php_pdo_oci.dll
  • php_pdo_oci8.dll
  • php_pdo_sqlite_external.dll
  • php_pspell.dll
  • php_sybase_ct.dll

但我真的不知道他们有什么问题。

请注意,我使用msi安装程序(php-5.2.17-Win32-VC6-x86.msi)安装了PHP,并安装了所有扩展。我也在使用Windows 7。

答案 6 :(得分:0)

作为删除最后一个反斜杠的@ ar2r答案的替代方法,您可以使用(正向)斜杠编写路径,即使最后使用斜杠也可以。出于某种原因,在路径的结尾处使用反斜杠并不适用于最新版本的Windows:

# works, no slash or forward slash at the end
PHPIniDir "C:\Program Files\PHP7"
PHPIniDir "C:/Program Files/PHP7/"
PHPIniDir "C:\Program Files\PHP7/" # mixing slashes and backslashes

# doesn't works, backslash at the end
PHPIniDir "C:\Program Files\PHP7\"

请注意,只要尾部斜杠反斜杠,混合正斜杠和反斜杠就会起作用。

这也适用于其他指令,我在为目录索引的图标配置Alias时注意到了这种行为。