我使用带有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
文件)
我在任何给定时间最多启用一个。
答案 0 :(得分:10)
删除最后一个斜杠:
PHPIniDir "C:\Program Files (x86)\php"
答案 1 :(得分:5)
我有同样的问题..我修好了。使用记事本或任何文本编辑器打开php.ini文件。禁用php.ini文件中的所有扩展名。通过逐个扩展注释,并找出导致问题的扩展名。
答案 2 :(得分:3)
有几个原因:
答案 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的扩展程序是:
但我真的不知道他们有什么问题。
请注意,我使用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
时注意到了这种行为。