Image

Imagezang wrote in Imagephp

Listens: Depeche Mode - The Sweetest Condition

PHP doesn't wanna write to a text file.

Okay, I'm having a bit of a problem here... I'm trying to create an RSS feed from my MySQL database. Unfortunately though, I can't seem to write to a file. PHP isn't running in safe mode, and the enclosing folder permissions don't seem to make a difference. The file gets created, but no writing occurs, and if the 'is_writeable' statement is taken out, the script runs until it times out and gives an error 500. Anyone have any clues?


<?php
error_reporting(1);

include("sqlstuff.inc");


$filepointer = fopen("/kunden/homepages/28/d58558265/htdocs/rss/news.rss", "w+") or die ("can't open file");


if (is_writeable($filepointer))
{


$contents = "<?xml version='1.0'?>\r";
// $contents .= "<!DOCTYPE rss SYSTEM 'http://my.netscape.com/publish/formats/rss-0.91.dtd'>\r";
$contents .= "<rss version='2.0'>\r";
$contents .= "\t<channel>\r";
$contents .= "\t\t<copyright>Copyright 2005 Jamie Nazaroff</copyright>\r";

$rightnow = date("D, d M Y h:i:s T");

$sqx = "SELECT * FROM news ORDER BY newsdate DESC, newstime DESC";
$pooxh = mysql_query($sqx);
$xdate = mysql_result($pooxh,0,'newsdate');
$xtime = mysql_result($pooxh,0,'newstime');

$xyear = substr($xdate, 0, 4);
$xmonth = substr($xdate, 5, 2);
$xday = substr($xdate, 8, 2);

$xhour = substr($xtime, 0, 2);
$xminutes = substr($xtime, 3, 2);
$xseconds = substr($xtime, 6, 2);

$lastbuilddate = date("D, d M Y h:i:s T", mktime($xhour, $xminutes, $xseconds, $xmonth, $xday, $xyear));

$contents .= "\t\t<pubDate>$rightnow</pubdate>\r";
$contents .= "\t\t<lastBuildDate>$lastbuilddate</lastBuildDate>\r";
$contents .= "\t\t<description>mysite.com News</description>\r";
$contents .= "\t\t<language>en-us</language>";
$contents .= "\t\t<link>http://www.mysite.com/?mode=news</link>\r";
$contents .= "\t\t<title>LALALA</title>\r";
$contents .= "\t\t<image>\r";
$contents .= "\t\t\t<link>http://mysite.com/</link>\r";
$contents .= "\t\t\t<title>LALALA</title>\r";
$contents .= "\t\t\t<url>http://www.mysite.com/rssbuttonnews.gif</url>\r";
$contents .= "\t\t\t<height>31</height>\r";
$contents .= "\t\t\t<width>88</width>\r";
$contents .= "\t\t</image>\r";
$contents .= "\t\t<webMaster>webmaster@mysite.com (Jamie Nazaroff)</webMaster>\r";
$contents .= "\t\t<managingEditor>webmaster@mysite.com (Jamie Nazaroff)</managingEditor>\r";

$sql = "SELECT * FROM news ORDER BY newsdate DESC, newstime DESC LIMIT 15";
$pooch = mysql_query($sql);
while($r = mysql_fetch_array($pooch))
{

$contents .= "\t\t<item>\r";

$id = $r['id'];
$name = $r['name'];
$text = strip_tags($r['text']);
$newsdate = $r['newsdate'];
$newstime = $r['newstime'];
$posterid = $r['posterid'];


$number = 400;

while (substr($text, 0, $number) != " ")
{
$number = $number - 1;
}

$text = substr($text, 0, $number - 1);

if (substr($text, -1, 1) == ".")
{
$ender = "..";
}
else
{
$ender = "...";
}

$text = $text . $ender;

$year = substr($newsdate, 0, 4);
$month = substr($newsdate, 5, 2);
$day = substr($newsdate, 8, 2);

$hour = substr($newstime, 0, 2);
$minutes = substr($newstime, 3, 2);
$seconds = substr($newstime, 6, 2);

$articletime = date("D, d M Y h:i:s T", mktime($hour, $minutes, $seconds, $month, $day, $year));

$contents .= "\t\t\t<title>$name</title>\r";
$contents .= "\t\t\t<link>http://www.mysite.com/?mode=news&nid=$id</link>\r";
$contents .= "\t\t\t<description>$text</description>\r";
$contents .= "\t\t\t<pubDate>$articletime</pubDate>\r";

$sqlx = "SELECT * FROM users WHERE user_id='$posterid'";

$resultx = mysql_query($sqlx)
or die("Problems resolving user names".mysql_error());

$myrowx = mysql_fetch_array($resultx);

$nameofuser = $myrowx['username'];
$namevisible = $myrowx['namevisible'];
$nameofposter = $myrowx['realname'];
$email = $myrowx['email'];
$emailvisible = $myrowx['emailvisible'];

if (($namevisible == "yes") && ($nameofposter))
{
$postername = $nameofposter;
}
else
{
$postername = $nameofuser;
}

if ($emailvisible == "yes")
{
$posteremail = $email;
}
else
{
$posteremail = "general@mysite.com";
}

$contents .= "\t\t\t<author>$posteremail ($postername)</author>\r";
$contents .= "\t\t\t<guid>http://www.mysite.com/?mode=news&nid=$id</guid>\r";
$contents .= "\t\t</item>\r";

}

$contents .= "\t</channel>\r";
$contents .= "</rss>\r";


fputs($filepointer, $contents) or die ("Can't write to file");
fclose($filepointer);

}
else
{
echo "The file is not writeable";

$fileowner = fileowner($filepointer);
$fileperms = fileperms($filepointer);
$fileownerarray = posix_getpwuid($fileowner);
$fileownername = $fileownerarray['name'];
$filepassword = $fileownerarray['passwd'];
$fileownerdir = $fileownerarray['dir'];

echo "<br>$fileownername : $filepassword<br>$fileperms<br>$fileownerdir";

}
?>