PHP 页面仅显示某些 iOS 设备上的原始代码

PHP page shows only raw code on some iOS devices

提问人:sh37211 提问时间:8/29/2023 最后编辑:sh37211 更新时间:8/29/2023 访问量:35

问:

我的Apache服务器上运行着一个非常简单、最小的基于PHP的页面,它可以从各种计算机、操作系统和Web浏览器加载。PHP版本为7.4.33,Apache Server版本为Apache/2.4.56(Raspbian)。

但有几个人报告说,当他们尝试访问它时,他们看到的是原始PHP代码,而不是网页。这些似乎是使用 Safari 和/或 Chrome 的 iOS 用户。我已经在 SO 上搜索了以前的问题,但只找到了一个相关帖子,但它不适用于我的情况——大多数情况下,整个页面都会显示,只有某些 iOS 设备才能看到代码。

代码本身非常简单。它加载一个页眉和一个页脚,它们都是 .php 文件,但仅包含 HTML*:

<?php
  include 'header.php';
  include 'footer.php';
?>

以上是一些iOS用户看到的,而不是正确的页面。我在 iPad(iPadOS 16.6、Safari、Chrome 和/或 Brave)上重现了这个问题,但它在我的 iPhone (iOS 16.6) 上运行良好,我通常可以看到该页面 (Safari)。

清除cookie /缓存,从私人模式开始,尝试另一个浏览器,都无法在iPad上提供帮助。此外,添加一些显式标头语言(如PHP)也无济于事。header("Content-Type: text/html; charset=UTF-8");

我该如何帮助这些用户?这不会让我遇到 Apache 配置错误,因为它在所有其他设备/浏览器/等上加载良好(但也许是?因此,它是否以某种方式与苹果有关?

*例:

    $ cat header.php 
    <center><h2>Welcome to the page</h2></center>
PHP iOS 谷歌浏览器

评论

0赞 Alberto Fecchi 8/29/2023
这是一个与服务器相关的问题,Apache 无法正确呈现 php 页面。您是否使用任何具有特殊规则的?Apache的访问/错误日志中是否有任何有用的信息?.htaccess
0赞 sh37211 8/29/2023
澄清:Apache可以正确地将PHP页面呈现给除少数iOS用户之外的所有用户。任何地方都没有(除了它只读“”)。Apache的访问日志中没有任何值得注意的内容,除了iPad的Safari显然注册为Intel Mac之外?() Apache 错误日志中未显示任何内容。.htaccess/usr/share/debian-reference/.htaccessAddCharset UTF-8 .txtGET ... "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5.2 Safari/605.1.15"
0赞 CBroe 8/29/2023
“还添加了一些明确的标题语言,例如 header(”Content-Type: text/html;字符集=UTF-8“);PHP无济于事。- 您的问题是PHP代码根本没有执行 - 那么再添加一行未执行的PHP代码应该如何解决这个问题......?“因此,它与苹果有关吗?”- 客户端不能自己决定,“我要让服务器不解析PHP代码,而是向我展示原始代码” - 如果是这样的话,你就会在一个简单的iOS设备中找到“终极黑客工具”,因为这样就没有包含带有存储凭据的文件等将是安全的。
0赞 CBroe 8/29/2023
因此,这些设备发出的请求必须与其他设备发送请求有很大不同,才能使您的服务器决定做出不同的反应。首先,我将检查配置,了解PHP是如何集成到Web服务器中的,以及何时它可能取决于某些请求特征,例如User-Agent等。
0赞 sh37211 8/30/2023
在尝试重新配置服务器端的过程中,我首先设法破坏了从所有机器和浏览器查看的PHP执行。然后,在摆弄了各种 .conf 文件后,我注意到 PHP 又开始工作了,包括在少数有问题的 Apple 设备上。所以,我不确定问题最初是什么原因,或者具体是我做了什么最终解决了它。但它只能在服务器端修复,不需要苹果用户做任何不同的事情。(模组:由于你对这篇文章的看法。我知道这个答案可能对许多其他人没有帮助。

答: 暂无答案