Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
你知道为什么这段PHP代码会让我的脚本挂起吗?_Php - Fatal编程技术网

你知道为什么这段PHP代码会让我的脚本挂起吗?

你知道为什么这段PHP代码会让我的脚本挂起吗?,php,Php,谢谢你花时间阅读这篇文章。我不是一名程序员,但凭借有限的技能,我已经能够确定,几乎在每页开头调用的这个函数正在使我们的store POS脚本失败。当我们转到这个PHP应用程序的url时,我们只得到一个空白页面。当对该函数的调用被注释掉时,页面加载就正常了 有趣的是,我们的代码没有做任何更改,并且已经使用了3年多。几天前刚停止工作,我们的网络主机没用了。他们无法告诉我我们的服务器环境是否有任何更改,所以我不知道从哪里开始查找信息。我的同事怀疑他们可能更改了正在使用的PHP版本,尽管我不知道哪个版本

谢谢你花时间阅读这篇文章。我不是一名程序员,但凭借有限的技能,我已经能够确定,几乎在每页开头调用的这个函数正在使我们的store POS脚本失败。当我们转到这个PHP应用程序的url时,我们只得到一个空白页面。当对该函数的调用被注释掉时,页面加载就正常了

有趣的是,我们的代码没有做任何更改,并且已经使用了3年多。几天前刚停止工作,我们的网络主机没用了。他们无法告诉我我们的服务器环境是否有任何更改,所以我不知道从哪里开始查找信息。我的同事怀疑他们可能更改了正在使用的PHP版本,尽管我不知道哪个版本可能在这里列出的版本之前

服务器信息 -Apache版本2.2.29

-PHP版本5.4.33

-MySQL版本5.5.37-cll

-体系结构x86_64

-操作系统linux

// new version for SEO htaccess short url's
Function MakeSecure(){
    if($_SERVER['HTTPS'] != "on"){
        $URI = $_SERVER['REQUEST_URI'];
        $strSiteLocation = "https://" . str_replace("/","",DOMAIN) . $URI;
        header("Location: " . $strSiteLocation );
    }
}

除非您在其他地方将域设置为常量,否则它不会重定向到任何地方。既然你说这是你代码的顶端,我怀疑情况就是这样


要确认这一点,请将最后的
header()
调用替换为调用
echo()
(输出到浏览器)或
error\u log()
(输出到web服务器日志文件)。这将告诉你它试图将你重定向到哪里;我认为它不是一个有效的URL

因此PHP从5.3升级到5.4,公共类通过引用传递变量,这在5.4中是不允许的。将公共类中的一行更改为

$cp=fsockopen(SMTP_主机,SMTP_端口,&$errno,&$errstr,1)

$cp=fsockopen(SMTP_主机,SMTP_端口,$errno,$errstr,1)


现在该网站加载良好。感谢所有参与进来的人

@l'l'l可能是一个
const
您是否检查了
$\u服务器['HTTPS']
的值?根据文档,任何非空值(不仅仅是“on”)都应该表明协议是https。在文件顶部设置此值以显示PHP抛出的所有错误<代码>错误报告(E_全部);ini_集('display_errors','1')。请注意,您最好在开发环境中执行此操作,而不是在实时网站上执行此操作。@Bono我将其添加到加载的第一个文件中,但仍然会得到一个空白页面。似乎没有什么不同。还查看了代码,以找到另一个可能与此添加相对应的
错误报告
。没有效果,这很奇怪。确保将其放入浏览器url中显示的文件中。也试试巴特的建议。如果你不知道如何展示它;do
echo$\u服务器['HTTPS']
;或
var_dump($_SERVER['HTTPS'])
在我们的
settings.php
中有第15行
define(“DOMAIN”,“DOMAIN.com/”)当我将标题更改为echo时,我无法获得任何输出。我想重申的是,该准则已经运行了3年多,没有任何问题或变化导致这种情况。谢谢你抽出时间!然而,当你注释掉这段代码时,你说页面运行良好?因为有三行代码,其中两行是简单的字符串操作,所以
头调用似乎是个问题。更新您的问题,使其包含页面上的实际代码,显示在上下文中调用此函数的位置。该函数在多个页面上调用,因此,当删除该函数时,会在一个页面上修复问题,您单击以移动到另一个页面的任何链接都会导致一个空白屏幕。这不是最近添加的内容,我只是在从index.php开始的链后面注释代码部分,试图找出是什么造成了这个问题。请容忍我,因为我已经说过我没有资格自己解决这个问题。这将是一个很大的代码发布,因为它就像一个链和4-5页互动在这里。发布300行代码是否合适?您始终可以发布pastebin链接。你在评论什么?在每个页面上调用
MakeSecure()
?尝试注释掉函数中的所有行,然后逐个添加它们。我仍然认为header函数是唯一可能导致问题的东西。请参阅下面@miken32的解决方案。谢谢你的帮助,它让我找到了问题所在!你应该将自己的答案标记为已接受,以结束问题。如果他们在没有通知的情况下升级你的平台,你也应该找一个新的网络主机!