【问题标题】:PHP files are downloaded by browser instead of processed by local dev server (MAMP)PHP 文件由浏览器下载,而不是由本地开发服务器 (MAMP) 处理
【发布时间】:2011-01-19 23:18:39
【问题描述】:

在我将 AddHandler application/x-httpd-php5s .php 添加到本地服务器文档根目录中的 .htaccess 文件之前,一切都很顺利(根据我正在使用的站点,我经常更改该文件)。因为我在访问http://localhost:8888 时这样做了,所以我的浏览器只下载了 index.php,它根本没有被处理,只是原始代码。现在我从 .htaccess 文件中删除了该行,但我仍然遇到这个问题

我发现,如果我在主机文件中为 127.0.0.1 添加替代条目,则新条目的行为就像过去的“本地主机”一样。但是,如果我将上面的行添加到我的 .htaccess 中,它也会淘汰那个新主机。我试过重新安装MAMP 并清除它的缓存和我能找到的所有临时文件。我浏览了 Apache 的 httpd.conf 文件都无济于事。

所以,要明确一点:http://localhost:8888 遇到了上述问题。如果我在我的主机文件中为 127.0.0.1 添加一个新条目,比如“goomba”,并且上面的行不在根 .htaccess 中(并且从未用于该主机/别名/任何内容),那么我可以访问 http://goomba:8888正好。但是,如果我确实将该行添加到 .htaccess 中,那么我必须在我的 hosts 文件中添加另一个条目以绕过它即使我从 .htaccess 文件中删除该行

我可以使用不同的 127.0.0.1 别名(主机?这叫什么?),但它仍然坏了我。

为了清楚起见,我使用的是 Mac OS Leopard(但我使用的不是内置的 Apache 设置,而是 MAMP)。

【问题讨论】:

    标签: php apache macos configuration mamp


    【解决方案1】:

    在我克隆一个 repo 并尝试设置项目之后,我不得不运行 composer update 来安装所有依赖项,然后它打开页面而不是下载文件

    【讨论】:

      【解决方案2】:

      删除评论

      <IfDefine PHP>
         LoadModule php_module        modules/libphp.so
      </IfDefine>
      

      在 etc/extra/httpd-xampp.conf 中

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题,这是因为在此文件夹中,您隐藏了带有一些自定义代码的 .htaccess 文件,对我来说是因为我从正在运行的网站服务器复制。尝试重命名文件,您将看到您的项目。然后根据需要自定义文件。

        【讨论】:

          【解决方案4】:

          如果有人再次遇到此类问题,请先做一些最重要的事情。我的意思是,使用私人导航(没有缓存)。 我因此而浪费了时间。

          GLHF

          【讨论】:

            【解决方案5】:

            请注意,确保您的实时环境中没有与其他文件一起意外下载的 htaccess 文件。此外,请确保在编辑 htaccess 时匹配您的 PHP 版本。错误的版本会导致相同的问题错误设置。

            下面是一个运行 PHP7 的例子:

            应用程序/x-httpd-ea-php71 .php .php7 .phtml

            我希望这些信息可以提供帮助 - 在创建票 8 年后发生在我身上 :)

            【讨论】:

            • 我遇到了类似的问题 - htdocs/.htaccess 包含 AddHandler application/x-httpd-ea-php70 .php 行,它默默地失败了。解决方法是删除该行。
            【解决方案6】:

            在我的情况下,删除或注释掉我根目录所涉及的 htacces 文件中的“AddHandler php56-cgi .php”解决了它

            最好的

            【讨论】:

              【解决方案7】:

              我实际上有一个非常相似的问题。当我尝试测试 php 和 apache 是否一起工作时,我所有的 php 文件都在下载。原来他们没有一起工作。

              我必须卸载 php,我会推荐相同的操作过程,然后仅使用 php.net 上下载的 zip 文件重新安装 php,而不是使用 MAMP 安装它。我认为我的问题是我使用了 php 安装程序。我不建议使用它。

              这个网站帮了我很多,我遇到了 apache 无法启动的问题,虽然这不是你的问题,但这个网站解决了 apache 无法启动和下载 php 文件的问题,即使你在 Mac 上它也可以帮助你http://forums.phpfreaks.com/topic/185771-problem-starting-apache-2214-after-installing-php-5212

              希望一切正常!祝你好运!

              【讨论】:

                【解决方案8】:

                我遇到过几次类似的问题,重命名文件对我不起作用。使用 OS X Lion,我发现正确的配置是这样的:

                <IfModule php5_module>
                    AddType application/x-httpd-php .php
                    <FilesMatch \.php$>
                        SetHandler application/x-httpd-php
                    </FilesMatch>
                    AddType application/x-httpd-php-source .phps
                    <IfModule dir_module>
                        DirectoryIndex index.php index.html
                    </IfModule>
                </IfModule>
                

                让它对我有用的魔力是 SetHandler application/x-httpd-php 部分。

                当然,将&lt;IfModule php5_module&gt; 编辑为您的 php 版本。

                【讨论】:

                • 在 OSX Mountain Lion 上也是如此。
                • 这个应该放在哪里?
                • @ToniMichelCaubet: 迟到了,但是把它放在/etc/apache2/other/php5.conf 中,并确保 apache 的主要配置(在 /etc/apache2/httpd.conf 中)有一条未注释的行(靠近底部),上面写着:@987654326 @.
                • 这对我也适用于 macOS Sierra。奇怪的是,我在从 Mamp 3.5 切换到 Mamp 4 时遇到了这个问题。通过添加 SetHandler application/x-httpd-php 事情又开始工作了。
                • 我不知道为什么会这样,但经过 4 多个小时和 50 多次谷歌搜索后,它成功了!注意:我不得不将 php5_module 更改为 php7_module 因为我在 php7.3
                【解决方案9】:

                对于同样的问题,我删除了 '5' AddType application/x-httpd-php .php .htm .html

                它工作正常!试试

                【讨论】:

                  【解决方案10】:

                  您正在应用处理程序应该在的位置(请参阅documentation on handlers

                  试试这个:

                  AddType application/x-httpd-php5 .php
                  

                  编辑: 正如您所指示的缓存模块已加载,您可以阅读cachinghtcacheclean(以清除磁盘缓存)。您也可以临时使用CacheDisable 指令。您还可以尝试的另一件事是重命名您请求的文件(例如 index.php -> index.bak),在浏览器中再次请求该文件(现在应该是 404),然后恢复并重试。

                  【讨论】:

                  • 我已经尝试过了(又一次,只是现在),但无济于事。无论如何,我的 httpd.conf 已经有该行(减去 5)。我的问题是,尽管我的问题中提到的有问题的行已被删除,但我仍然遇到问题。就像服务器只为localhost 缓存了.htaccess 文件,而不是为指向127.0.0.1 的其他主机缓存。请强调我的问题以进行澄清。无论如何,谢谢!
                  • 服务器是否加载了缓存模块?是的,“5”是不小心留下的
                  • 确实如此:file_cache_module、cache_module、disk_cache_module 和 mem_cache_module。我怎样才能清除这些缓存?这些中的任何一个都会导致这个问题吗?谢谢!
                  • 简单地重命名文件,尝试用旧名称访问它,然后按照你的描述再次重命名它就像一个魅力。谢谢!
                  【解决方案11】:

                  也许您想要application/x-httpd-php5 而不是application/x-httpd-php5s? (注意末尾缺少s。)

                  【讨论】:

                  • 我试过没有用。在 .htaccess 中没有任何内容之前它工作得很好。
                  【解决方案12】:

                  首先检查您的 apache 服务器是否正在运行。开始->运行->cmd然后执行命令:

                  netstat -abn

                  查询结果如下:

                  TCP 0.0.0.0:8888 0.0.0.0:0 LISTENING 600 [apache.exe]

                  如果您在端口 8888(没有 0.0.0.0:8888 行)上找不到任何监听,那么您的 apache 无法启动。要找出它无法启动的原因,您应该找到 apache 日志目录并检查 error.log(可能是您最近更新了 php?)。如果你发现 0.0.0.0:80 监听线路但其他一些软件正在那里监听(你有运行 IIS 吗?)那么你应该删除/重新配置该软件以释放端口 80。如果你有 apache 在端口 80 上监听但仍然无法打开您的网站,您无法通过检查 apache 日志文件找出导致问题的原因,那么它就是数据库问题。检查您的 mysql 是否正在运行并使用相同的命令进行侦听,但您应该寻找

                  TCP 0.0.0.0:3306 0.0.0.0:0 监听 [mysqld-nt.exe]

                  如果你找不到这样的行,那么你的 mysql 服务器没有运行 - 检查 mysql 日志文件是否有错误。如果两台服务器都在运行并且您无法在浏览器中获得任何输出,请检查您的防火墙和防病毒软件 - 它们可能会阻止您的请求。希望这会有所帮助;)

                  【讨论】:

                  • 一些事情:我在 Mac OS Leopard 上; Apache 服务器正在为我的 hosts 文件添加新条目。有关更多详细信息,请参阅我的帖子的更新。谢谢!
                  猜你喜欢
                  • 2018-06-07
                  • 2015-09-29
                  • 2015-01-02
                  • 1970-01-01
                  • 1970-01-01
                  • 2022-10-15
                  • 2011-10-18
                  • 2016-12-14
                  • 2011-11-08
                  相关资源
                  最近更新 更多