【问题标题】:php files downloading instead of openingphp文件下载而不是打开
【发布时间】:2011-11-18 08:01:02
【问题描述】:

我有一台 Windows 7 笔记本电脑。我下载了 PHP 5.2.8。我下载了 Apache 2.2。

我为 PHP 安装运行了 MSI,我知道不推荐这样做,但我尝试了多次正常路径但没有成功。

我正在运行 apache,它显示“正在运行所有 apache 服务”。当我进行安装时,我将其设置为“localhost”。

我在控制面板中选中了 CGI 复选框。

我在 C:\inetpub\wwwroot 中放置了一个简单的文件 test.php ...但是当双击该文件时,它会尝试下载该文件而不是将其作为网页打开。

我已经在谷歌上搜索了几个小时,但找不到合适的修复方法。我已经清除了我的缓存,但仍然没有运气。

我还将 apache 设置为侦听端口 8080,以确保之前没有其他任何东西在使用端口 80。

有什么想法吗??

谢谢!


更新——我错过了 php5apache2.dll ...我将它放在 PHP 目录中,但结果仍然相同。我也尝试通过 IE 浏览到文件位置,不幸的是,它也没有改变任何东西。


再次更新,- - DOH! - - 没有意识到它是 localhost/test.php 或者下面的答案是什么。当我这样做时,我得到一个服务器错误页面..这比我猜的要好:)

Server Error in Application "DEFAULT WEB SITE"

HTTP Error 500.0 - Internal Server Error

An unknown FastCGI error occured

Module FastCgiModule 

Notification ExecuteRequestHandler 

Handler PHP 

Error Code 0x8007010b 

Requested URL http://localhost:80/test.php

Physical Path C:\inetpub\wwwroot\test.php 

Logon Method Anonymous 

Logon User Anonymous 

最可能的原因:

•IIS 收到请求;但是,在处理请求期间发生了内部错误。此错误的根本原因取决于处理请求的模块以及发生此错误时工作进程中发生的情况。

•IIS 无法访问网站或应用程序的 web.config 文件。如果 NTFS 权限设置不正确,就会发生这种情况。

•IIS 无法处理网站或应用程序的配置。

•经过身份验证的用户没有使用此 DLL 的权限。

•请求已映射到托管处理程序,但未安装 .NET 可扩展性功能。

当我尝试启动/运行 apache 时,它​​会出错。所以当我运行 apache 测试配置时,我收到以下消息: httpd.exe:C:/Apache/conf/httpd.conf 第 1 行的语法错误:无法将 C:/php/php5apache2_2.dll 加载到服务器中:找不到指定的模块。

但是,当我浏览到那个导演时,我确实在那里看到了那个 dll 文件!呃……

想法?

【问题讨论】:

  • 你能确认 apache 的配置文件有使用 php 模块处理 .php 文件的指令吗?尝试按照here 的说明将 php 作为 apache 处理程序运行。你还说当文件被双击时它要求下载。您必须通过浏览器访问该文件才能让 php 执行它。
  • 您必须导航到页面,例如 localhost ,而不是双击。
  • 当我打开 IE 并输入路径 C:/inetpub...etc....myFile.php,它做同样的事情,只是尝试下载文件。但我可能已经发现了问题,提到了一点 php5apache2.dll,但我的 php 文件夹目录中没有这个。所以我正在浏览互联网试图找到某个地方来获取这个文件。
  • 好的,我下载了那个文件并将它放在我的 php 文件夹中,但是当我使用 IE 并导航到 php 文件目录时,同样的事情...... =\
  • 手动安装 apache2 和 php5 后我遇到了同样的问题。经过长时间的调整,我意识到问题出在文件/目录路径中区分大小写。显然,Windows 上的 apache 非常重视区分大小写。希望它可以帮助别人!

标签: php apache iis windows-7 installation


【解决方案1】:

双击?就像在资源管理器中一样?如果是这样,这将不会打开页面。您需要浏览到该页面。如果您在 apache 的目录列表中,则无需双击。

至于设置,如果您是新手,最好的选择是使用 iis、easyphp、xampp 或其他一些变体

他们会让你轻松奔跑

【讨论】:

    【解决方案2】:

    如果您在 C:\inetpub\wwwroot 中放置了一个名为 test.php 的文件,那么您将打开浏览器到 http://localhost/test.php 以尝试执行该文件。

    php5apache2.dll 文件需要放在你的 apache 模块目录中,你需要添加适当的 apache 配置行,如下所示:

    LoadModule php5_module "c:/path/to/php5apache2.dll"

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

    SetHandler 应用程序/x-httpd-php

    进行这些更改后,您需要重新启动 apache。

    【讨论】:

    • 我试过了,但由于某种原因我无法启动 apache,我更新了我的帖子,请看。 :) 谢谢。
    • 是目录 C:/PHP 还是 C:/php,我认为大小写在 Windows 上很重要。同样从错误消息来看,看起来 php 安装程序可能已经尝试将 php 配置为 cgi。我忽略的最重要的事情是您的服务器运行为 IIS,而不是 Apache。关闭 IIS 服务并尝试运行 apache。
    • 很好,有点 :) 目录是大写的,所以我将它设置为小写,并验证 httpd.conf 也有小写。我还去了 IIS 管理器并关闭了服务器。但是,当我尝试启动 apache 服务器时,我仍然收到相同的消息...刚刚重新启动我的笔记本电脑,仍然是同样的事情 =\
    【解决方案3】:

    假设您已按照其他答案中的说明在 Apache 中正确安装了 PHP,则 .php 页面可能未发送正确的标头。我有一个 .php 文件,它发出带有 Content-Type: text/json 的标头,这通常用于为 Ajax 客户端提供服务。 .php 页面应该发送 Context-Type: text/html。

    要确定这是否确实是问题,您可以使用带有 -S 选项的 wget,或使用浏览器中的开发人员工具。看看这个答案:Tool to view response headers

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-08
      • 2016-12-14
      • 1970-01-01
      相关资源
      最近更新 更多