Avatar billede ohmish Nybegynder
09. januar 2003 - 20:39 Der er 7 kommentarer og
1 løsning

Billeder i Mysql. Fejl: basedir restriction, men filer gemmes!

Jeg bruger Jonas Delf's script til at lagre binære data i mysql. Når jeg uploader et billede får jeg flg. fejl:

Warning: open_basedir restriction in effect. File is in wrong directory in /usr/www/test/public_html/test/upload.php on line 12

OG:

Warning: fopen("/tmp/phpnxJGSA", "r") - Operation not permitted in /usr/www/test/public_html/test/upload.php on line 12

OG:

Warning: Supplied argument is not a valid File-Handle resource in /usr/www/test/public_html/test/upload.php on line 12

På linie 12 har jeg:
$file_code = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));

Hvis jeg kigger i databasen ka jeg se at billedet ER gemt, og med den rigtige størrelse. Hvad gør jeg galt, eller er det alene pga. begrænsninger på mit webhotel?
Avatar billede ohmish Nybegynder
09. januar 2003 - 20:41 #1
Og jeg er klar over at det sænker performance på databasen osv. Men jeg har brug for det.
Avatar billede dank Nybegynder
10. januar 2003 - 15:53 #2
prøv at oprette filen via FTP istedet for at scriptet opretter filen.

Nu er jeg ikke god til PHP.. angiver du den fulde sti?

Men i alle tilfælde ser det ud til at dit webhtoel har sat både fopen samt basedir i deres php.ini - hvilket indskrænker dine muligheder noget. tag en snak med dem.

Jeg tror ikke du skal lede efter fejlen i din kode.

Prøv også at se i en php.info hvaf fopen og basedir siger om dit webhotel (kig under lokalt ikke globalt)
Avatar billede ohmish Nybegynder
10. januar 2003 - 21:19 #3
fopen og basedir er sat som mulig/lovlig. her er scriptet as is:

<?
// Mysql:
// CREATE TABLE files (
// id int(11) DEFAULT '0' NOT NULL auto_increment,
// file_code longblob NOT NULL,
// file_size int(50) DEFAULT '0' NOT NULL,
// file_type varchar(50) NOT NULL,
// PRIMARY KEY (id)
// );

if ($form_data && $form_data != "none") {
    $file_code = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
    $connect = mysql_connect("localhost","xxxx","xxxx");
    mysql_select_db("xxxx",$connect);
    if (mysql_query("insert into files (file_code, file_size, file_type) values ('$file_code', '$form_data_size', '$form_data_type')")) {
        echo "Your file is saved i the mysql-table 'files'";
    } else {
        echo "A problem occured, and the file hasn't been saved";
    }
}
echo '<form action="upload.php" method="post" enctype="multipart/form-data">';
echo 'Select file: <input type="file" name="form_data">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br>'; //Defines max_file_size of files
echo '<input type="submit">';
echo '</form>';

print "<img src=\"upload.php?id=1\">";
   
$connect = mysql_connect("localhost","xxxx","xxxx");
mysql_select_db("xxxx",$connect);

$q = mysql_query("SELECT file_code,file_type FROM files WHERE id='$id'") or die(mysql_error());
if (mysql_num_rows($q)) {
    extract(mysql_fetch_array($q));

    header("Content-type: $file_type");
    echo $file_code;
} else {
    echo "404 - file not found!";
}

?>
Avatar billede avatar2 Nybegynder
11. januar 2003 - 11:38 #4
Det kunne godt ligne et spørgsmål om users.
Den først fejl kan jeg ikke lige se hvor kommer fra men fejl 2 er vist måden at fopen arbejder på. Den opretter en midlertidig fil mens den downloader/henter hele filen. Dit script er sikkert apache user eller nobody og har måske ikke tilladelse til at læse fra det pågældende dir. Fejl 3 kommer direkte fra fejl 2 pga. at den ikke har tilladelse til at udføre fopen. Jeg håber at det evt. kan guide dig i den rigtigt retning.
Avatar billede dank Nybegynder
11. januar 2003 - 17:05 #5
hvad finder du ud af?
Avatar billede ohmish Nybegynder
11. januar 2003 - 17:10 #6
Tak for svar/kommentarer.
Jeg har droppet alt det med billeder i mysql.. det er for besværligt i længden , og virker tit ikke.
Avatar billede dank Nybegynder
11. januar 2003 - 17:16 #7
nå.. fordi både det som jeg skriver samt avatar skriver er faktisk ret rigtigt :o|
Avatar billede ohmish Nybegynder
12. januar 2003 - 07:02 #8
Måske.. men intet af det løste mit problem. Måske sku spørgsmålet hellere ha' lydt: Hvordan får jeg det her til at virke?

Nu er jeg gået over til at gemme billederne i en .htaccess-mappe med "kattelem" dvs. tilgang kun muligt via særligt script. Se evt. http://www.eksperten.dk/spm/303662 :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester