Hallo,
ich habe ein PHP-Script zum Upload von Dateien aus einem PHP/SQL Buch übernommen. Leider funktioniert es nicht richtig.
Sobald ich auf Upload klicke, wird der ID, Name und Dateityp ordnungsgemäß in die Tabelle "filestore" eingetragen, aber die eigentliche Datei nicht. Da erscheint folgende Fehlermeldung:
---
Warning: open_basedir restriction in effect. File is in wrong directory in /home/jens/smb/public_html/code_archiv/kapitel_11/filestore.php on line 49
Warning: fopen("/tmp/phpz4nn8Z", "rb") - Operation not permitted in /home/jens/smb/public_html/code_archiv/kapitel_11/filestore.php on line 49
Warning: Supplied argument is not a valid File-Handle resource in /home/jens/smb/public_html/code_archiv/kapitel_11/filestore.php on line 53
Warning: Cannot add header information - headers already sent by (output started at /home/jens/smb/public_html/code_archiv/kapitel_11/filestore.php:49) in /home/jens/smb/public_html/code_archiv/kapitel_11/filestore.php on line 70
---
Hier das PHP-Skript:
---
---
Hat jemand eine Idee, was hier falsch sein könnte? An den Rechten des SQL-Benutzers kann es wohl nicht liegen, da beim Benutzer "root" der gleiche Fehler erscheint. Bitte helft einem PHP/SQL-Anfänger! Danke schonmal im vorraus!
Gruß
Jens
ich habe ein PHP-Script zum Upload von Dateien aus einem PHP/SQL Buch übernommen. Leider funktioniert es nicht richtig.
Sobald ich auf Upload klicke, wird der ID, Name und Dateityp ordnungsgemäß in die Tabelle "filestore" eingetragen, aber die eigentliche Datei nicht. Da erscheint folgende Fehlermeldung:
---
Warning: open_basedir restriction in effect. File is in wrong directory in /home/jens/smb/public_html/code_archiv/kapitel_11/filestore.php on line 49
Warning: fopen("/tmp/phpz4nn8Z", "rb") - Operation not permitted in /home/jens/smb/public_html/code_archiv/kapitel_11/filestore.php on line 49
Warning: Supplied argument is not a valid File-Handle resource in /home/jens/smb/public_html/code_archiv/kapitel_11/filestore.php on line 53
Warning: Cannot add header information - headers already sent by (output started at /home/jens/smb/public_html/code_archiv/kapitel_11/filestore.php:49) in /home/jens/smb/public_html/code_archiv/kapitel_11/filestore.php on line 70
---
Hier das PHP-Skript:
---
PHP-Code:
<?php
$dbcnx = mysql_connect("localhost", "login", "passwort");
mysql_select_db("jokes");
if (($action == "view" or $action == "dnld") and $id != "") {
// Benutzer ruft eine Datei ab
$sql = "SELECT FileName, MimeType, FileData
FROM filestore WHERE ID = '$id'";
$result = @mysql_query($sql);
if (!$result) die("Datenbankfehler: " . mysql_error());
$filename = mysql_result($result,0,"FileName");
$mimetype = mysql_result($result,0,"MimeType");
$filedata = mysql_result($result,0,"FileData");
if ($action == "dnld") {
if (strpos($HTTP_USER_AGENT,"MSIE"))
$mimetype = "application/x-download";
else
$mimetype = "application/octet-stream";
}
header("Content-disposition: filename=$filename");
header("Content-Type: $mimetype");
header("Content-Length: " . strlen($filedata));
echo($filedata);
exit();
} elseif ($action == "del" and $id != "") {
// Benutzer loescht eine Datei
$sql = "DELETE FROM filestore WHERE ID = '$id'";
$ok = @mysql_query($sql);
if (!$ok) die("Datenbankfehler: " . mysql_error());
header("Location: $PHP_SELF");
exit();
} elseif ($action == "ulfile" and $uploadfile != "") {
// Ausschliessen, dass eine Datei kein Upload ist
if (!is_uploaded_file($uploadfile))
die("$uploadfile ist keine hochgeladene Datei!");
// Datei zum binaeren Einlesen oeffnen ("rb")
$tempfile = fopen($uploadfile,"rb");
// Gesamte Datei in den Arbeitsspeicher einlesen, wobei die PHP-Funktion filesize benutzt wird
// um die Dateigroesse zu ermitteln.
$filedata = fread($tempfile,filesize($uploadfile));
// Einfuegen in die Datenbank vorbereiten, indem
// vor irgendwelche Sonderzeichen Backslashes gesetzt werden
$filedata = addslashes($filedata);
// SQL-Anfrage formulieren
$sql = "INSERT INTO filestore SET
FileName = '$uploadfile_name',
MimeType = '$uploadfile_type',
Description = '$desc',
FileData = '$filedata'";
//Einfuegen durchfuehren
$ok = @mysql_query($sql);
if (!$ok) die("Datenbankfehler beim Einfügen der Datei: " . mysql_error());
header("Location: $PHP_SELF");
exit();
}
// Vorgabemaessige Seite: Gespeicherte Dateien anzeigen
$sql = "SELECT ID, FileName, MimeType, Description
FROM filestore";
$filelist = @mysql_query($sql)
or die("Datenbankfehler: " . mysql_error());
?>
<html>
<head>
<title> PHP/MySQL Dateimagazin </title>
</head>
<body>
<h1>PHP/MySQL Dateimagazin</h1>
<form action="<?=$PHP_SELF?>?action=ulfile" method="post"
enctype="multipart/form-data">
<p>Datei hochladen:<br />
<input type="file" name="uploadfile" /></p>
<p>Dateibeschreibung:<br />
<input type="text" name="desc" maxlength="255" /></p>
<p><input type="submit" name="go" value="Hochladen" /></p>
</form>
<p>Folgende Dateien sind in der Datenbank gespeichert:</p>
<table width="85%" border="0" cellpadding="0" cellspacing="0">
<tr>
<th align="left">Dateiname</th>
<th align="left">Typ</th>
<th align="left">Beschreibung</th>
</tr>
<?php
if (mysql_num_rows($filelist) > 0) {
while ($f = mysql_fetch_array($filelist)) {
?>
<tr valign="top">
<td nowrap>
<a href="<?=$PHP_SELF?>?action=view&id=<?=$f['ID']?>">
<?=$f['FileName']?></a>
</td>
<td nowrap><?=$f['MimeType']?></td>
<td><?=$f['Description']?></td>
<td nowrap>
[<a href="<?=$PHP_SELF?>?action=dnld&id=<?=$f['ID']?>"
>Download</a> |
<a href="<?=$PHP_SELF?>?action=del&id=<?=$f['ID']?>"
onClick="return confirm('Diese Datei löschen?');"
>Löschen</a>]
</td>
</tr>
<?php
}
} else {
?>
<tr><td colspan="3" align="center">Keine Dateien vorhanden!</td></tr>
<?php
}
?>
</table>
</body>
</html>
Hat jemand eine Idee, was hier falsch sein könnte? An den Rechten des SQL-Benutzers kann es wohl nicht liegen, da beim Benutzer "root" der gleiche Fehler erscheint. Bitte helft einem PHP/SQL-Anfänger! Danke schonmal im vorraus!
Gruß
Jens
EDIT:
php-tags by TBT
Kommentar