Autor Zpráva
peta
Profil
Jestli to spravne chapu,
- tak se nemuzu ptat na file_exists, protoze do daneho adresare nemam prava
- error4 u souboru nevim, jak zjistit, co znamena. Kdyby mi nekdo poradil, kde najdu tabulku chyb nebo, jak si ji zobrazit PHP prikazem?



hosting: hostuju.cz

file_exists($file['tmp_name']);
move_uploaded_file($photo1,$photo2);

Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/tmp/phph5vQre) is not within the allowed path(s): (/home/www/hostuju.cz:/usr/local/lib/php) in /home/www/hostuju.cz/subdomains/mracek/album/photoupload.inc.php on line 13

file = Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 )
BaTeCzKo
Profil
Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/tmp/phph5vQre) is not within the allowed path(s): (/home/www/hostuju.cz:/usr/local/lib/php) in /home/www/hostuju.cz/subdomains/mracek/album/photoupload.inc.php on line 13

Lezes do vyssiho adresare, nez muzes.
Alphard
Profil
jestli jde o zjištění, zda byl soubor uploadován, tak:
is_uploaded_file
peta
Profil
BaTeCzKo toz to jsem pochopil taky. A jak mam ted uploadovat soubory?

Alphard Ok, to vyresi problem file_exist, mozna.
A ted druhej problem s tim error=4 , ktere pravdepodobne nastalo pri move_upload... nebo copy() bys nevedel?

Jinak jsem nasel:
http://cz2.php.net/error_log
http://cz2.php.net/manual/cs/ref.errorfunc.php#ini.error-log

podle toho by error=4 melo byt
4 E_PARSE (integer) Compile-time parse errors. Parse errors should only be generated by the parser.
z cehoz jsem asi tak stejne chytry :)
totez:
http://cz2.php.net/manual/cs/function.error-reporting.php

Jo, program mam na:
http://mracek.hostuju.cz/album/album.php
login = aaa heslo = aaa
a mam to zastaveno nakonci pres die()
PhotoOk je vysledek funkce:
function fileCheck($file)
{
global $FILE_MIMES,$FILE_EXTS,$MAX_SIZE;
$fileOK = 0;
if (is_array($file)) {$fileOK = 33;}
//name
if (is_array($file) && $file['name']!=="" && is_uploaded_file($file['tmp_name']))
//file_exists()
{
$fileOK = 2;
//size
if (is_uploaded_file($file['tmp_name']) && $file['size']<$MAX_SIZE)
{
$fileOK = 3;
$file_ext = strtolower(substr($file['name'],strrpos($file['name'],".")));
if (array_key_exists($file['type'],$FILE_MIMES) && in_array($file_ext,$FILE_EXTS) )
//type,ext
{
$fileOK = 1;
}
}
}
return $fileOK;
}
peta
Profil
To vlastne nic nevyresi, na moveuploaded se ptam v dalsim radku, jak koukam... Ted nevim proc jsem tam pouzival i fileexist, ale asi k tomu byl doby duvod. Neva, zakomentuji
peta
Profil
mam, jeden z tech prikladu pro
http://cz2.php.net/is_uploaded_file
ma
switch($HTTP_POST_FILES['userfile']['error']){
case 0: //no error; possible file attack!
echo "There was a problem with your upload.";
break;
case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini
echo "The file you are trying to upload is too big.";
break;
case 2: //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form
echo "The file you are trying to upload is too big.";
break;
case 3: //uploaded file was only partially uploaded
echo "The file you are trying upload was only partially uploaded.";
break;
case 4: //no file was uploaded
echo "You must select an image for upload.";
break;
default: //a default error, just in case! :)
echo "There was a problem with your upload.";
break;
}

V tom pripade je ale dost divne, ze mi to proslo radkem
if (is_uploaded_file($file['tmp_name']) && $file['size']<$MAX_SIZE)
protoze tady to melo napsat, ze neni uploadovany a nikoliv photo ok
peta
Profil
dobry, tak ty zakladni problemy jsem vyresil, to byl ten
file_exists()
a dal uz to normalne projde, az po radek
{@move_uploaded_file($photo1,$photo2) || @copy($photo1,$photo2);}
kde to prvni chapu, ze neprovede, ale nechapu copy()

Warning: copy() [function.copy]: open_basedir restriction in effect. File(/tmp/phpGJ0Nxe) is not within the allowed path(s): (/home/www/hostuju.cz:/usr/local/lib/php) in /home/www/hostuju.cz/subdomains/mracek/album/album-edit.z.php on line 100

to jako nemuzu uploadovat? nebo, jak to z tama vykopiruji?
Alphard
Profil
http://www.linuxsoft.cz/article.php?id_article=310
peta
Profil
Alphard
super, jenze to neresi problem
"
5. Skript musí soubor nějak zpracovat. Nejčastěji se přesouvá z dočasné složky někam jinam. Funkce move_uploaded_file je bezpečnější než copy, takže byste ji měli použít.
"

@move_uploaded_file($photo1,$photo2) || @copy($photo1,$photo2);
- tento radek se pokusi provest moveupload a pokud to nevyjde, pokusi se aspon o copy
Jenze na mem hostingu nefunguje ani jedno, takze, co mam pouzit?
Alphard
Profil
co obsahuje $photo1?
peta
Profil
Alphard
http://mracek.hostuju.cz/album/album.php
login = aaa heslo = aaa

@move_uploaded_file($photo1,$photo2) || @copy($photo1,$photo2);
cely problem je v tom, ze ve $photo1 je spravna cesta, #photo2 ma spravna opravneni, ale fukce
copy() ani move...() nefunguje na TMP adresar, kam opravneni nemam.

Vis, na localhostu mi to funguje, na wz.cz take, ale na hostuju.cz maji ty prava jinak.

jeste zkusim opendir() temp, jestli to pujde...
peta
Profil
Alphard
http://mracek.hostuju.cz/y/upl.txt
http://mracek.hostuju.cz/y/upl.php

Jeste jsem zkousel jednoduchy priklad na upload, muzes is to zkusit sam.
Vcera jsem si chvili psal s adminem banan.cz , ktery to snad provozuje a neustale mi tvrdil, ze to funguje. Tak jsem mu rikal, at mi da funkcni priklad, ze si to z nej vykopiruji, co potrebuji. A mezitim jsem napsal toto a pak uz bylo moc hodin, takze jsme se k nnicemu nedopracovali.
krteczek
Profil
Vyzkoušejte tuto verzi, ten Váš mišunk psaný v php3, přemalovaný na novější verzi, není zrovna moc košer. Toto je ostatně taky jen takový lehký nástřel kudy byste se měl vydat...

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Odeslání obrázků na server</title>
</head>

<body>

<div>

<?php
error_reporting(E_ALL);

if (isset($_FILES['fupload']))

{

echo "název: ". $_FILES['fupload']['name'] ."<br>";

echo "velikost: ". $_FILES['fupload']['size'] ." bajtů<br>";

echo "dočasné umístění: ".$_FILES['fupload']['tmp_name'] ."<br>";

echo "typ: ". $_FILES['fupload']['type'] ."<br>";

echo "chyba: ". $_FILES['fupload']['error'] ."<br>";
if (($_FILES['fupload']['type'] == "image/pjpeg") or ($_FILES['fupload']['type'] == "image/jpeg"))

{

$nazev_souboru = $_FILES['fupload']['tmp_name'];

$cil = "soubory/".$_FILES['fupload']['name'];

if(move_uploaded_file($nazev_souboru, $cil))

{

$size = getImageSize($cil);

$html_img_str = '<p><img width="' . $size[0] . '" height="' . $size[1] . '" ';

$html_img_str .= 'src="' . $cil . '" alt="přenesený obrázek"></p>';

echo $html_img_str;
}
else
{
echo "Přenesený soubor nelze zkopírovat";
}

}
else
{
echo "Lituji, soubor není obrázkem jpg, nemohu ho uložit ani zobrazit";
}

}

?>

</div>

<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">

<p>

<input type="hidden" name="MAX_FILE_SIZE" value="256000">

<input type="file" name="fupload" style="width: 500px;"><br>

<input type="submit" value="Odeslat soubor">

</p>

</form>

</body>

</html>


krteczek
peta
Profil
http://mracek.hostuju.cz/y/uplkrtecek.php

n�zev: klorinda.jpg
velikost: 20854 bajt�
do�asn� um�st�n�: /tmp/phpkVUEY3
typ: image/jpeg
chyba: 0

Warning: move_uploaded_file() [function.move-uploaded-file]: open_basedir restriction in effect. File(/tmp/phpkVUEY3) is not within the allowed path(s): (/home/www/hostuju.cz:/usr/local/lib/php) in /home/www/hostuju.cz/subdomains/mracek/y/uplkrtecek.php on line 71

Warning: move_uploaded_file() [function.move-uploaded-file]: open_basedir restriction in effect. File(/tmp/phpkVUEY3) is not within the allowed path(s): (/home/www/hostuju.cz:/usr/local/lib/php) in /home/www/hostuju.cz/subdomains/mracek/y/uplkrtecek.php on line 71

Warning: move_uploaded_file(/tmp/phpkVUEY3) [function.move-uploaded-file]: failed to open stream: Operation not permitted in /home/www/hostuju.cz/subdomains/mracek/y/uplkrtecek.php on line 71

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpkVUEY3' to 'soubory/klorinda.jpg' in /home/www/hostuju.cz/subdomains/mracek/y/uplkrtecek.php on line 71
P�enesen� soubor nelze zkop�rovat


nebyla by jeste nejaka jina moznost uploadu, treba na zaklade FTP nebo tak?
Zkousel jsem treba kopirovani z TMP pres fopen() a fopen vyhlsilo stejnou chybu s pravy.
Zkousel jse fileread() totez.
Ze bych postavil radek jako
@move_uploaded_file($from,$to) || @copy($from,$to) || @copy2($from,$to);
s vlastni kopirovaci funkci copy2()
krteczek
Profil
vytvořil jste adresář soubory? a nastavil mu práva 777?
krteczek
peta
Profil
krteczek
http://mracek.hostuju.cz/y/uplkrtecek.txt
http://mracek.hostuju.cz/y/uplkrtecek.php

http://mracek.hostuju.cz/y/upl.txt
http://mracek.hostuju.cz/y/upl.php

adresar je stejny, prava v mem prikladu zobrazuji. Opakuji znova, hlasi to, ze nemam opravneni pro TMP. Ted je otazka, jestli mam spravne nastavene TMP, kdyz pouzivam default nastaveni.
Jinak teda mam chat :)
http://mracek.hostuju.cz/chat/

Uz rozumim, adresar soubory, jeste a prava na nej. Ted jsem vytvoril, hlasky jsou stejne.

Pochop, problem je s TMP nikoliv pravy v mem adresari. Pouziji-li metodu fopen("xxx","w"); soubor se vytvori a mohu do nej zapisovat.
peta
Profil
Uz rozumim, adresar soubory, jeste a prava na nej. Ted jsem vytvoril, hlasky jsou stejne.
krteczek
Profil
No jo ovocný hosting nefunguje pořádně ani placený... :-( ničeho se člověk nedovolá... Doporučuji přejit klidně i na wz, jejich uroveň je podstatně vyžší
peta
Profil
krteczek
Mno, ja jsem to prave chtel nakonec dat na wz.cz . Jenom jsem chtel takove demo na hostingu, kde mam vice mista.

A nevis nejaky script na upload z disku pomoci FTP? Ze bych to tam dal jako alternativu.
Jinak vcera jsem si psal chvili s adminem z banan.cz a nic nevykoumal. Toz, kdo vi, kdo u toho sedel taky :) Porad mi dokola opakoval, ze upload funguje nez jsem mu dal ten jednoduchy demo priklad v /y/ :))
krteczek
Profil
kdybyste prolezl to forum, tak byste zjistil, že jim to fungovalo, ale potom někdo udělal zasah do konfigu a nikdo nevi co je špatně (to už odhaduji)
peta
Profil
krteczek
jsem tam pridal odkaz na PHPinfo()

pro porovnani
http://mracek.hostuju.cz/y/upl.php
http://peter-mlich.wz.cz/x/upl.php
takze je mozne, ze by meli byt v open_basedir obe hodnoty stejne?
na localhostu mam treba obe hodnoty novalue
na wz.cz maji obe stejne
a na hostuju.cz maji jednu do homedir a druhou jako novalue
peta
Profil
krteczek
Uz to spravili :) Wau, ale peklo. Uz jsem si nasel dokonce FTP upload :)
krteczek
Profil
Taky jsem jim psal na icq, že tam mají problém... :-) ano už to funguje :-) ale stejně si myslím, že to není dobrý hosting :-/
krteczek
Toto téma je uzamčeno. Odpověď nelze zaslat.