Problems with file creation

Problems with file creation

am 01.02.2008 18:00:50 von jerrygarciuh

Hello,

I have been migrating my custom cms work towards a push system. My
first step has been to make all navigation into static files that are
written when the site structure is changed via the cms.

Thing is I have had to resort to having a dummy file in place and use
copy() on it to create my new files. This is less elegant than I
would like but I find that fopen($filename, 'w') fails to create a
file where none exists on a lot of servers.

On one insecure *nix server where passthru was enabled I also tried

if (!file_exists($pgNavFile)) {
passthru("touch $pgNavFile");
}

but it failed silently.

My preferred route would be for the function below to work every
time. Can anyone tell me why the w flag does not work on all servers?

TIA

jg

function writeMenu($filename, $somecontent) {
$msg = 'Navigation updating...';
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'w')) {
$msg .= " Cannot open file ($filename). ";
}
// Write $somecontent to our opened file.
if (fwrite($handle, $somecontent) === FALSE) {
$msg .= " Cannot write to file ($filename). ";
}
fclose($handle);
$msg .= " Success, updated file: $filename. ";
} else {
$msg .= " The file $filename is not writable. ";
}
return $msg;
} // func

Re: Problems with file creation

am 01.02.2008 18:09:56 von Jerry Stuckle

jerrygarciuh wrote:
> Hello,
>
> I have been migrating my custom cms work towards a push system. My
> first step has been to make all navigation into static files that are
> written when the site structure is changed via the cms.
>
> Thing is I have had to resort to having a dummy file in place and use
> copy() on it to create my new files. This is less elegant than I
> would like but I find that fopen($filename, 'w') fails to create a
> file where none exists on a lot of servers.
>
> On one insecure *nix server where passthru was enabled I also tried
>
> if (!file_exists($pgNavFile)) {
> passthru("touch $pgNavFile");
> }
>
> but it failed silently.
>
> My preferred route would be for the function below to work every
> time. Can anyone tell me why the w flag does not work on all servers?
>
> TIA
>
> jg
>
> function writeMenu($filename, $somecontent) {
> $msg = 'Navigation updating...';
> if (is_writable($filename)) {
> if (!$handle = fopen($filename, 'w')) {
> $msg .= " Cannot open file ($filename). ";
> }
> // Write $somecontent to our opened file.
> if (fwrite($handle, $somecontent) === FALSE) {
> $msg .= " Cannot write to file ($filename). ";
> }
> fclose($handle);
> $msg .= " Success, updated file: $filename. ";
> } else {
> $msg .= " The file $filename is not writable. ";
> }
> return $msg;
> } // func
>

Usually because the PHP user doesn't have write authority on the directory.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================