php提供一个空白页面,没有错误
我有一个AJAX应用程序的以下部分,它没有给出错误,但也没有向屏幕显示任何内容,因此我不确定问题出在哪里。直接从带有?cmd&id=1的浏览器调用此页面应返回,甚至不带?cmd调用此页面也应返回cmd错误消息 编辑:添加了测试用例:我确实收到了cmd错误消息,但是当我通过&id=1(1是一个有效的id)时,没有返回任何html,view source完全为空。我是否错误地使用了echo或类似的东西 edit2:添加了echo作为第一行:没有看到第一个echo edit3:在返回到旧版本并再次进行所有更改后,现在我在使用有效的cmd和id参数调用时获得测试字符集输出。我使用的代码与下面粘贴的代码相同 守则:php提供一个空白页面,没有错误,php,mysql,ajax,mysqli,Php,Mysql,Ajax,Mysqli,我有一个AJAX应用程序的以下部分,它没有给出错误,但也没有向屏幕显示任何内容,因此我不确定问题出在哪里。直接从带有?cmd&id=1的浏览器调用此页面应返回,甚至不带?cmd调用此页面也应返回cmd错误消息 编辑:添加了测试用例:我确实收到了cmd错误消息,但是当我通过&id=1(1是一个有效的id)时,没有返回任何html,view source完全为空。我是否错误地使用了echo或类似的东西 edit2:添加了echo作为第一行:没有看到第一个echo edit3:在返回到旧版本并再次进行
<?php
echo "hello world";
error_reporting(E_ALL);
if (isset($_GET["cmd"]))
$cmd = $_GET["cmd"];
else
die("You should have a 'cmd' parameter in your URL");
$id = $_GET["id"];
$con = mysqli_connect("localhost", "user", "password", "db");
echo "test con";
if(!$con)
{
die('Connection failed because of' .mysqli_connect_error());
echo "test error";
}
//$con->query("SET NAMES 'utf8'");
$con->set_charset("utf8"));
echo "test charset";
if($cmd=="GetSALEData")
{
echo "test cmdifloop";
if ($getRecords = $con->prepare("SELECT * FROM SALES WHERE PRODUCT_NO = ?"))
{
echo "test recordifloop";
$getHtml = $con->prepare("SELECT PRODUCT_DESC FROM SALES WHERE PRODUCT_NO = ?");
$getHtml->bind_param("s", $id);
$getHtml->execute();
$getHtml->bind_result($PRODUCT_DESC);
$getRecords->bind_param("s", $id);
$getRecords->execute();
$getRecords->bind_result($PRODUCT_NO, $PRODUCT_NAME, $SUBTITLE, $CURRENT_PRICE, $START_PRICE,
$PRICE_COUNT, $QUANT_TOTAL, $QUANT_SOLD, $ACCESSSTARTS, $ACCESSENDS,
$ACCESSORIGIN_END, $USERNAME, $BEST_PRICEDER_ID, $FINISHED, $WATCH,
$BUYITNOW_PRICE, $PIC_URL, $PRIVATE_SALE, $SALE_TYPE, $ACCESSINSERT_DATE,
$ACCESSUPDATE_DATE, $CAT_DESC, $CAT_PATH, $COUNTRYCODE, $LOCATION,
$CONDITIONS, $REVISED, $PAYPAL_ACCEPT, $PRE_TERMINATED, $SHIPPING_TO,
$FEE_INSERTION, $FEE_FINAL, $FEE_LISTING, $PIC_XXL, $PIC_DIASHOW,
$PIC_COUNT, $ITEM_SITE_ID
);
while ($getRecords->fetch())
{
$ccodes = array( "1" => "USA",
"77" => "Germany",
"16" => "Austria",
"122" => "Luxemburg",
"193" => "Switzerland",
);
$conditions = array( "0" => "USA",
"77" => "Germany",
"16" => "Austria",
);
$country = $ccodes[$COUNTRYCODE];
if ( $country == "" ) $country = "Not applicable";
$columns = array('FINISHED', 'WATCH', 'PRIVATE_SALE', 'REVISED', 'PAYPAL_ACCEPT', 'PRE_TERMINATED', 'PIC_XXL', 'PIC_DIASHOW');
foreach($columns as $column) {
$$column = $row[$column] ? 'YES' : 'NO';
}
imageResize($PIC_URL, 250, 300);
file_put_contents($id, file_get_contents($PIC_URL));
$html = htmlentities(json_encode($PRODUCT_DESC));
$shortDate = strftime("%d %m %Y", strtotime($ACCESSSTARTS));
echo "<h1>".$PRODUCT_NAME."</h1>
<div id='leftlayer' class='leftlayer'>
<p><strong>Username: </strong>".$USERNAME."
<p><strong>PRODUCT Number: </strong>".$PRODUCT_NO."
<p><strong>Subtitle: </strong>".$SUBTITLE."
<p><strong>SALE Start: </strong>".$ACCESSSTARTS."
<p><strong>SALE End: </strong>".$ACCESSENDS."
<p><strong>SALE Type: </strong>".$SALE_TYPE."
<p><strong>Category: </strong>".$CAT_DESC."
</div>
<div class='leftlayer2'>
<p><strong>Condition: </strong> ".$CURRENT_PRICE."
<p><strong>Total Items: </strong> ".$QUANT_TOTAL."
<p><strong>Total Sales: </strong> ".$QUANT_SOLD."
<p><strong>Start Price: €</strong> ".$START_PRICE."
<p><strong>Buyitnow Price: €</strong> ".$BUYITNOW_PRICE."
<p><strong>PRICEs: </strong> ".$PRICE_COUNT."
<p><strong>Revised: </strong> ".$REVISED."
</div>
<div class='leftlayer2'>
<p><strong>Private: </strong> ".$PRIVATE_SALE."
<p><strong>Finished: </strong> ".$FINISHED."
<p><strong>Cancelled: </strong> ".$PRE_TERMINATED."
<p><strong>Paypal: </strong> ".$PAYPAL_ACCEPT."
<p><strong>Country: </strong> ". $country ."
<p><strong>Location: </strong> ".$LOCATION."
<p><strong>Shipping to: </strong> ". $country ."
</div>
<div id='rightlayer'>
<img src='".$PIC_URL."' width='".$imageSize["width"]."' height='".$imageSize["height"]."'>
<p><a href='#' onclick=\"makewindows(" . $html . "); return false;\">Click for full description </a></p>
</div>
</div>
</div>";
}
}
function imageResize($imageURL, $maxWidth, $maxHeight)
{
$imageSize["width"] = 0;
$imageSize["height"] = 0;
$size = getimagesize($imageURL);
if ($size) {
$imageWidth = $size[0];
$imageHeight = $size[1];
$wRatio = $imageWidth / $maxWidth;
$hRatio = $imageHeight / $maxHeight;
$maxRatio = max($wRatio, $hRatio);
if ($maxRatio > 1) {
$imageSize["width"] = $imageWidth / $maxRatio;
$imageSize["height"] = $imageHeight / $maxRatio;
return $imageSize;
} else {
$imageSize["width"] = $imageWidth;
$imageSize["height"] = $imageHeight;
return $imageSize;
}
} else {
die(print_r(error_get_last()));
}
}
}
这将帮助您查看错误:
ini_set('display_errors', '1');
可能有助于:
监视Web服务器日志(如tail-f/var/log/apache2/error.log
)
使用Firebug并在控制台中查看来自脚本的AJAX响应。错误可能会出现在那里
这里有一个额外的右括号:
$con->set_charset("utf8"));
如果没有达到调试回音,那么故障点似乎就在数据库连接附近,除非我遗漏了什么
检查连接详细信息,并检查是否启用了mysqli扩展。我遇到了一个类似的问题,我会莫名其妙地得到一个空白页面,通常在IE6中,但有时在其他浏览器中。结果是一个字符编码问题。我输出了一些奇怪的字符,浏览器根据内容猜测编码是什么。我通过显式设置此标题修复了此问题:
header('Content-type: text/html; charset=utf-8');
您是否尝试过将print或echo语句立即放在脚本顶部以测试输出的基本测试
<?php
print "Test";
?>
我还建议在尝试连接后使用或die($msg)
捕获
对你的案子来说没问题。作为一个起点。我会在需要时不时这样做。与其假设问题是一个非常复杂的问题,不如说它常常是请求变量中的意外情况,访问错误的页面,在错误的时间访问正确的页面,等等
直接从服务器调用此页面
带有?cmd&id=1
的浏览器应返回
你说的“返回”是什么意思?从我看到的代码来看,您需要?cmd=
GetSALEData
,否则将返回一个空白页,因为所有内容都包装在if($cmd==“GetSALEData”)
语句中
更正:如果查询字符串的cmd
设置为“GetSALEData”以外的值,则应看到“测试竞赛字符集
”。(这两个测试后来添加到代码中。)
我不知道这是否会导致错误,但这和getRecords bind_参数不应该将“I”作为第一个参数吗?在if-else后面加上括号
声明。我有一种感觉
编辑您的代码可能有“修复”错误
潜在的问题。这里有几个好的建议供您尝试。我还没有看到的是确保有足够的内存分配给PHP。那边的人有一个很好的分类。第22行有一个额外的括号
这个
应该是这样
$con->set_charset("utf8");
未来的两个调试提示。首先,您需要对web主机进行shell访问,或者需要在开发机器上本地安装PHP。如果您正在运行Unix,您可能已经拥有了它。打开一个终端并键入
php -v
如果有,可以通过执行以下操作检查PHP文件的语法
//on *nix
php yourfile.php
//or on windows
c:\path\to\php.exe yourfile.php
这将避免严重的语法错误。此外,谷歌/搜索本网站的“安装php本地教程”或类似内容,以了解如何获得在您自己的机器上运行的Web服务器、mysql数据库和php的完整副本
第二个建议是检查错误日志,如果安装本地副本,这将更容易。即使PHP没有显示错误消息,错误仍然会记录到某个文件中。在您的情况下,您会在日志文件中看到类似的内容
PHP Parse error: syntax error, unexpected ')' in foo.php on line 22
发生这种情况的原因是服务器配置设置为不显示错误,因此脚本依赖于执行错误报告(E_ALL)代码>-只要执行error\u reporting()
函数,这应该可以正常工作。但是,如果出现解析错误,则不会执行错误报告(E\u ALL)
,因此您不会看到错误,因为php.ini错误报告设置永远不会被覆盖
唯一的解决方案是在更高的位置(如htaccess或php.ini)设置错误报告。但现在至少你知道空白页=解析错误 如果您确定没有错误,并且一直得到一个空白页面,我建议您安装php进程
yum -y install php-process
在其他情况下,如果没有安装pear,则会出现这样的错误
yum-y安装php pear php pear DB
或仅安装DBpear安装DB
希望这有助于解决空白页问题。仍然没有显示错误。我不认为这是一个php错误问题,只是一个逻辑问题或诸如此类的问题。要显示解析错误,必须在配置文件中启用display\u errors,而不是在运行时向您添加此指令。htaccess如果您想捕获解析错误,我已检查错误日志,一切正常,我将调查firebug.fixed,但是这没有什么区别。在修复这一行之后,这个脚本对我来说运行良好,只是我的数据库中没有任何记录。我的数据库中肯定有数据。我可以粘贴表信息,这样您就可以使用一些测试数据了?除去第一行以外的所有内容。你看到输出了吗?我看到cmd错误甚至是w
PHP Parse error: syntax error, unexpected ')' in foo.php on line 22
yum -y install php-process