我无法理解为什么这个PHP脚本会给我500个内部服务器错误。
$query = "SELECT video_id,title FROM video_id";
$videos = mysql_query($query);
if($videos){
$videos = mysql_fetch_assoc($videos);
foreach($videos as $video){
echo '<div class="video">';
echo '<a href="video.php?v="'.$video['video_id'].'"> <h3>"'.$video['title'].'"</h3></a>';
echo '</div>';
}
}else{
echo "<p>No new videos actually</p>";
}
mysql_close();
&GT;
这就是代码。这似乎是我之前写过的所有其他简单脚本。通过cpanel观察错误日志我看到了这个错误:
[Mon Oct 25 03:25:24 2010] [error] [client 80.181.111.60] SoftException in Application.cpp:256: File "/home/netatwor/public_html/cms/media/related.php" is writeable by group
任何人都可以帮助我吗?
答案 0 :(得分:4)
这是您的网络服务器(或前端或模块)提供的错误。它检查文件/home/netatwor/public_html/cms/media/related.php
上的permssions并且它不会让它运行,因为它是组可写的。
要解决此问题,请执行chmod gw-w /home/netatwor/public_html/cms/media/related.php
或用于处理网站权限的等效内容。
答案 1 :(得分:0)
我不知道Application.cpp是什么,但是关于组可写的错误听起来像是一个安全警告,你的php文件具有错误的权限。谷歌的chmod
或单一文件的持久性。
答案 2 :(得分:0)
与您的错误无关,但我相信您的代码在许多级别上存在缺陷,并且不会按照您的想法执行操作。让我告诉你:
$videos = mysql_fetch_assoc($videos);
foreach($videos as $video){
echo '<div class="video">';
echo '<a href="video.php?v="'.$video['video_id'].'"> <h3>"'.$video['title'].'"</h3></a>';
echo '</div>';
}
您可能认为代码将针对查询返回的每个视频运行,但事实并非如此。你实际上正在预测一个视频,就是这样。 foreach循环中$ video的值不是数组。它将是单个视频阵列中的各个值。
但还有更多:
if($videos){
mysql_query的值为false,表示存在错误,或指向零或更多行的资源。它不会告诉您是否返回了行。
这是您的代码应该的编写方式:
$query = "SELECT video_id,title FROM video_id";
$videos = mysql_query($query);
/**
* There was an error if $videos is false. Use mysql_error()
* to get a message explaining the error.
*/
if (!$videos) {
die(mysql_error());
}
/**
* You use the function mysql_num_rows() to find out how many
* rows were returned by the query.
*/
if(mysql_num_rows($videos) > 0) {
/**
* You need to keep calling mysql_fetch_assoc() until there are
* no more rows to return.
*/
while($video = mysql_fetch_assoc($videos)) {
echo '<div class="video">';
echo '<a href="video.php?v="'.$video['video_id'].'"> <h3>"'.$video['title'].'"</h3></a>';
echo '</div>';
}
} else {
echo "<p>No new videos actually</p>";
}
mysql_close();