Премини към съдържанието
Peac36

Отказан достъп до качен файл PHP/Apache

Препоръчан отговор


Здравейте още съм начинаещ в PHP-то затова се допитвам до вас.Преписах от един учебник програма за upload на снимка от form-а и изкарване то  й.Проблема е ,че файла се прехвърля в зададената директория взима всички зададените параметри ,но отказва достъпа до самият файл.Изкарва всичко освен самата снимка със грешка в browser-a "Not allowed to load local resource".Сменях правата на папката в която е целия пакет, но това не доведе до нищо,затова предполагам ,че е проблема е в apache-то.

<?phpmysql_connect("localhost","root","asd") or die(mysql_error());mysql_select_db("movies") or die(mysql_error());chmod("C:wampwwwglava6",0750);$image_caption=$_POST['image_caption'];$image_username=$_POST['image_username'];$image_tempname=$_FILES['image_filename']['name'];$today=date("Y-M-d");$imageDIR="C:wampwwwglava6";$imageName=$imageDIR.$image_tempname;if(move_uploaded_file($_FILES['image_filename']['tmp_name'],$imageName)){list($width,$height,$type,$attr)=getImagesize($imageName);switch($type){case 1:$ext=".gif";break;case 2:$ext=".jpg";break;case 3:$ext=".php";break;Default:Echo "Sorry,but file you uploaded its not in supported extension <Br>";}$insert=mysql_query("insert into images(image_caption,image_username,image_date) values('".$image_caption."','".$image_username."','".$today."');") or die(mysql_error());$lastpicid=mysql_insert_id();$newfilename=$imageDIR.$lastpicid.$ext;rename($imageName,$newfilename);}?><html><body><p>Here is the picture </p><img src="<?php echo $imageDIR.$lastpicid.$ext ;?>" align=left></img>This is image is a <?php echo $ext; ?> image.<br>it is <?php echo $width ; ?> pixed wide.and <?php echo $height; ?> pixel high<br>its was uploaded <?php echo $today ;?><?php print_r($_FILES); ?></body></html>

Използвам Wamp пакета(Windows 7 Sp2/PHP5.4.16/Apache 2.4.4/Mysql 5.6.12),като не съм променял никои от началните параметри.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Не използвай локални пътища.

Така ли е показано и в книгата ?

Вместо

$imageDIR="C:wampwwwglava6";

използвай

$imageDIR="/glava6/";

И останалите промени по съответния начин.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Не става така показва ,че няма такава директория.Иначе точно така е показано в книгата,но срещах на няколко места ,че не е препоръчително за сигурността на сървар-а

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Не знам точно как са организирани директориите при теб, но нали вече не дава грешка "Not allowed to load local resource" ?

Оправи си пътя за качване на снимките и трябва да стане.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Мисля ,че не ме разбра предложения от тебе начин влошава нещата, а не ги подобрява. Сега даже не иска да прехвърли файл-а в upload-та папка.


Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Добави $_SERVER['DOCUMENT_ROOT']  в $imageDIR преди името на папката.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Което ме върна на първоначалния проблем със отказания достъп.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Какви са правата на папката, в която искаш да записваш файловете ?

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Това е един работещ код за качване на файлове:

<?php$uploaddir = 'uploads/';$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);echo "<p>";if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {echo "File is valid, and was successfully uploaded.n";} else {echo "Upload failed";}echo "</p>";echo '<pre>';echo 'Here is some more debugging info:';print_r($_FILES);print "</pre>";?>

В същата папка, където се намира горния PHP файл, е създадена подпапка uploads. Там се записват качените файлове.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Кодът ти работи,премести файла в определената папка,но пак при извикване на файла,пише че достъпът е отказан.Иначе правата на папката са full control.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Дай да видя URL , който използваш за това "извикване".

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

echo "<img src=".$_SERVER['DOCUMENT_ROOT']."/uploads/pics.png>";

А това е резултата от програмата ти заедно със грешката:

Публикувано изображение

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

А без $_SERVER['DOCUMENT_ROOT'] какво става ?

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

"404 not found"

 

Това сега пък е друга грешка.

Какво не е намерено ?

Дай да видим, как изглежда коригирания файл и опиши как са организирани папките на сайта.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Не използвай локални пътища.

Така ли е показано и в книгата ?

Вместо

$imageDIR="C:wampwwwglava6";

използвай

$imageDIR="/glava6/";

И останалите промени по съответния начин.

Това е верния отговор освен може би без предната наклонена черта $imageDIR="glava6/";. На img src трябва да му дадеш url път а не от файловата система. ако / ти е /var/www/ то glava6 ще ти е /var/www/glava6.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.