Php 返回白色页面?
我已经为我的网站建立了某种图像api密钥,但它似乎不起作用。我得到一个空白页,什么也不返回!怎么了?你好Php 返回白色页面?,php,image,api,gd,Php,Image,Api,Gd,我已经为我的网站建立了某种图像api密钥,但它似乎不起作用。我得到一个空白页,什么也不返回!怎么了?你好 if(isset($_GET['key']) && !empty($_GET['key'])){ $query = " SELECT * FROM table WHERE apikey
if(isset($_GET['key']) && !empty($_GET['key'])){
$query = " SELECT
*
FROM
table
WHERE
apikey = '". mysql_real_escape_string($_GET['key']) ."'
";
$mysqlquery = mysql_query($query);
if($mysqlquery){
if(mysql_num_rows($mysqlquery) > 0){
if(isset($_GET['type']) && isset($_GET['image'])){
if($_GET['type'] == "gif"){
if($_GET['image'] == "1"){
header('Content-type: image/gif');
echo file_get_contents('path/to/image/1.gif');
}
elseif($_GET['image'] == "2"){
header('Content-type: image/gif');
echo file_get_contents('path/to/image/2.gif');
}
elseif($_GET['image'] == "3"){
header('Content-type: image/gif');
echo file_get_contents('path/to/image/3.gif');
}
elseif($_GET['image'] == "4"){
header('Content-type: image/gif');
echo file_get_contents('path/to/image/4.gif');
}
elseif($_GET['image'] == "5"){
header('Content-type: image/gif');
echo file_get_contents('path/to/image/5.gif');
}
else
{
die('Could not load image');
}
}
else
{
die('Could not load image');
}
}
else
{
die('Could not load image');
}
}
else
{
die('Api key was not correct');
}
}
else
{
die('Mysql query failed');
}
}
else
{
die('No api key was set');
}
您需要检查错误日志/确保日志记录已打开,因为这听起来很像PHP抛出错误。(注意:如果这是一个生产环境,请务必在之后关闭日志记录。)
猜测一下,是否可能是不正确的路径之一,或者您在尝试设置标头之前已经输出了一些数据,但是错误日志应该可以清楚地看出问题所在。如果PHP抛出某些类型的错误,例如语法错误,它将输出错误消息,并在没有任何其他输出的情况下终止。但是,如果在php.ini中关闭了display_errors,那么甚至不会输出错误消息,您只会得到一个空白屏幕
或者,如果在发送图像/gif标题后试图发送一个不存在的文件,则这也可能导致空白页。看一下被发回的标题。如果您得到了一个image/gif内容类型头,那么代码将到达一个点,它将尝试发送一个图像。事实上,您实际上没有收到图像,这表明您没有要发送的图像文件 我在apache日志中没有发现任何错误。。。当我删除
标题('Content-type')
时,我得到的是图像的代码,而不是图像本身…@在这种情况下,可能是图像数据被破坏了。您可以尝试在每次调用file\u get\u内容后添加一个退出。(当然,除非你出于某种原因故意继续执行脚本。)@middaparka嗯,我还是一无所获。。。但这个问题是在我添加了查询之后出现的,它能阻止图像的任何内容吗?@Thew SQL查询应该不会有任何影响。我想你可能只需要一行一行地浏览逻辑,一边重复变量。(顺便说一句,在$#u GET['image']上使用a将比if/elseif结构整洁得多。)@middaparka当我回显$mysqlquery时,我得到了资源id#5
?你确定头还没有被发送吗?在校准header()
函数之前,尝试回显intval(headers\u sent())
。因为这可能会导致一个错误,导致一个空白屏幕。@Petah它返回0
,所以我认为它是错误的。。。