【问题标题】:Apache Server Not Working After Installing PhP安装 PhP 后 Apache 服务器不工作
【发布时间】:2017-08-02 17:05:52
【问题描述】:

[现在一切正常!] 我的解决方案:


我犯的第一个错误很简单,就是我安装了一些随机的 32 位版本的 PHP,以及一些随机的 64 位版本的 Apache!之后,我刚刚下载了最新版本的PHP,并将其放在我的c:\ php文件夹中,然后从apachelounge网站(网站左侧的VC14类别)下载了最新版本的VC14版本的Apache .最后一个错误是,我的 IIS 中的 W3SVC 仍在运行,所以我在服务下停止了那个(在 windows 中搜索 services.msc)!是的,就是这样,现在一切都解决了!


所以,我有一个问题,我最近安装了 Apache,并设置了一个工作网络服务器! 这一切都很好,我的整个网站完美无缺,并且完全可用! 但是,我所有的 php 脚本都不起作用,当在网站上加载一个时,apache 只显示 .php 文件的整个源代码,而不是像 html 页面那样显示它!

所以,我注意到,我的 apache 服务器没有配置 PHP! 然后我做的是下载 php,把它放在 c:\php 中,配置 php.ini,所有这些工作,我知道因为在 IIS 10 中,我的网站在 PHP 上运行得非常好!

所以我安装了php,对于apache 2.4,VS11版本,对于apache也是如此,(我这样做是因为两者的最新版本都不适合我,我遇到了同样的问题)!

只要我完成最后一步, 将这些行添加到我的 httpd.conf(在我的 apache 文件夹中):

LoadModule php5_module "c:/php/php5apache2_4.dll"

AddHandler 应用程序/x-httpd-php .php

PHPIniDir "C:/php"

,当我想启动 apache 服务器时,它只是告诉我这个:

“请求的操作失败。” (当我在 Apache-Monitor 中选择我的服务器的服务时会发生这种情况,然后单击“开始”) (没有从 apache 创建错误日志,错误和日志文件夹中没有任何内容(两者都在 httpd.conf 中配置)) 只有 CMD 给我以下错误:

httpd:C:/Apache24/conf/httpd.conf 第 533 行的语法错误:不能 将 c:/php/php5apache2_4.dll 加载到服务器中:%1 不是有效的 Win32 申请。

现在,只要我从 httpd.conf 中删除这 3 行,服务器就可以再次正常工作,可以启动,并且网站可以使用,除了所有 php 页面都不起作用(当然)。

我听说过一些关于“libphp5.so”的消息,我不知道它是否与我的 apache 服务器或我的整个问题有关,但我不知道,至少我的中没有这样的东西“C:\Apache24”文件夹!

一些可能很重要的信息: 所有这些都由普通 PC (Windows 10)(64 位)、32GB RAM、8x4GHz 处理器等托管!

是的,我已将 c:\php 添加到我的 Path 环境变量中! (如前所述,如果我不添加这些行,一切正常,根据谷歌的结果,这是让 php 与 apache 一起工作所必需的)!

如果有人知道该怎么做,我会很高兴,因为我不想继续使用 IIS(它很好但是..),因为我可以用 Apache 做更多的事情!

【问题讨论】:

  • 这个问题最好直接发给Server Fault
  • 转储error.log怎么样
  • 没有错误...
  • 找到 apache 错误日志文件并在此处发布
  • @Code_O1logn 没有错误日志,我配置了错误文件夹,但是 apache 没有放任何东西(一切都以管理员身份运行)

标签: php apache


【解决方案1】:

仔细阅读手册。重新安装 apache 并使用 PHP 5.6。除非您准备好修复 PHP 7.1 带来的问题。注意不要将 VC11+ 版本的 PHP 与 apache.org 二进制文件一起使用。这取自 PHP.net

阿帕奇: 请使用 Apache Lounge 提供的 Apache 构建。他们 为 x86 和 x64 提供 Apache 的 VC11、VC14 和 VC15 构建。我们用 他们的二进制文件来构建 Apache SAPI。

如果您使用 PHP 作为 Apache.org 构建的模块(不是 推荐)你需要使用旧的VC6版本的PHP编译 使用旧版 Visual Studio 6 编译器。不要使用 VC11+ 版本的 PHP 与 apache.org 二进制文件。

使用 Apache,您必须使用 PHP 的线程安全 (TS) 版本。

VC11, VC14 & VC15 最新版本的 PHP 是用 VC11 构建的, VC14 或 VC15(分别为 Visual Studio 2012、2015 或 2017 编译器) 并包括性能和稳定性方面的改进。

  • VC11 版本需要安装 Visual C++ Redistributable for Visual Studio 2012 x86 或 x64

  • VC14 版本需要安装 Visual C++ Redistributable for Visual Studio 2015 x86 或 x64

  • VC15 版本需要安装 Visual C++ Redistributable for Visual Studio 2017 x64 或 x86

TS 和 NTS TS 是指支持多线程的构建。 NTS 指 仅构建单线程。 TS 二进制文件的用例涉及 与作为模块加载的多线程 SAPI 和 PHP 交互 网络服务器。对于 NTS 二进制文件,广泛的用例是交互 通过 FastCGI 协议与 Web 服务器连接,不使用 多线程(也包括 CLI)。

来源:PHP.NET Manual

【讨论】:

  • 您可以回答自己的问题,这可能对其他人有所帮助。
【解决方案2】:

确保 Apache2 和 PHP 二进制文件相同:

  • Visual Studio C++ 二进制兼容版本 (Visual Studio C++ 2015 = VC14,Visual Studio C++ 2017 = VC15)
  • 系统架构:32bit(win32) / 64bit(win64)

例如:

php-7.3.15RC1-Win32-VC15-x86

确保你有:

httpd-2.4.41-win32-VC15

为 Windows 下载 Apache 2 二进制文件的最佳位置是 Apache Lounge (在左上角你控制VC版本):

https://www.apachelounge.com/download/VC15/

要下载 PHP 二进制文件,还请注意,对于 Apache,您必须使用 PHP 的线程安全 (TS) 版本。去这里:

https://windows.php.net/qa/

不要忘记为 php 添加(系统变量)PATH, 以管理员身份打开 cmd 并输入:

setx path "%PATH%, C:\php73" /M

【讨论】:

    最近更新 更多