Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Проблем при прехвърлянето на сайт с права на директориите

Featured Replies

Здравейте, след като прехвърлих сайта на сървъра, където ще се хоства, директориите които се създават динамично за ъплоад на снимки се създават с права 400. въпреки че в кода съм задала са са с права 0777 :

mkdir( $this->dir.$id . "/", 777 ).

Когато работих сайта (не локално, а отново на друг сървър нямаше този проблем)

Трябва ли да се обърна към администратора на сървъра( фирмата, която ми предоставя хоста), или този проблем мога аз да го реша и съответно как?

Здравейте, след като прехвърлих сайта на сървъра, където ще се хоства, директориите които се създават динамично за ъплоад на снимки се създават с права 400. въпреки че в кода съм задала са са с права 0777 :

mkdir( $this->dir.$id . "/", 777 ).

Когато работих сайта (не локално, а отново на друг сървър нямаше този проблем)

Трябва ли да се обърна към администратора на сървъра( фирмата, която ми предоставя хоста), или този проблем мога аз да го реша и съответно как?

Виж тук: http://bg2.php.net/mkdir и обърни внимание на забележките за umask. Също разгледай и функцията chmod. Би трябвало да може да се справиш и без помощта на администратора.

Редактирано от divak (преглед на промените)

Ако фирмата предлага съпорт, не се колебай да се възползваш от него, ако имаш проблем. Все пак това им е работата. :ph34r:

Ако фирмата предлага съпорт, не се колебай да се възползваш от него, ако имаш проблем. Все пак това им е работата. :ph34r:

По принцип е така, но в случая според мен проблемът е в самите php скриптове, а се съмнявам дали оправянето на такива влиза в задълженията на въпросните администратори. Ето по-конкретни обяснения, че предния път дадох само линкове:

1) @meribor - промени това 777 на 0777 (иначе 777 десетично е равно на 1411 осмично, което е sticky bit + r-- --x --x). 0-та отпред означава, че числото е зададено в осмична бройна система.

2) При mkdir и други функции маската се комбинира с umask (file mode creation mask) - и от тази комбинация се определят правата на създадената директория (или файл).

3) Не е хубаво да променяш umask, понеже може да има неблагоприятни странични ефекти. Затова бих ти препоръчал да смениш правата на директорията с chmod, след като я създадеш (пък ако вече я има, просто може само да смениш правата).

Това е засега от мен cool.gif

  • Автор

замених 777 с 0777, но проблема не се реши.Има ли връзка с това че е активиран save_mode на сървъра?

замених 777 с 0777, но проблема не се реши.Има ли връзка с това че е активиран save_mode на сървъра?

Едва ли е от safe_mode, щом успяваш да създадеш директорията..., ако наистина успяваш (сигурно ли е, че директорията която се опитваш да създадеш вече не съществува).

Така или иначе - това, че се сменила маската на 0777 не е достатъчно - изпълняваш ли chmod? Пробвай следното и кажи какво ти връща:

<html>

<body>

	<p>

	<?php

		$current_umask = umask();

		printf( "result: %04o <br />", $current_umask );

	?>

	</p>

</body>

<html>

  • Автор

Резултата от кода, който ми написа е :result: 0022

Забравих да отебележа че сайта е разработен на сървър с PHP 4.3 , а сървъра , където ще се хоства е с php 5

директорията, се създава, но нямам права за писане в нея, т.е не мога да ъплоудвам снимки в нея

Редактирано от meribor (преглед на промените)

И ако има врзъка с това , че safe_mode e активиран , кака да избегба проблема.Също така забравих да отебележа че сайта е разработен на сървър с PHP 4.3 , а сървъра , където ще се хоства е с php 5

резултата от кода, който ми написа е :result: 0022

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

OK. Значи щом umask ти е 0022 (което двоично е 000 010 010), и се опитваш да създаваш директория с права 0777 (двоично 111 111 111), правата на директорията по принцип се получават така:

111 111 111 побитово и с инвертираната стойност на umask

111 101 101 и резултатът е:

---------------

111 101 101 (осмично 0755)
Т.е. става 755, а не 400, както ти спомена в началото (сигурна ли си, че 400 се получават правата)? С тези права (755), само собственикът на директорията (обикновено собственика на процеса на web server-а) (и root) може да пише в нея. Което всъщност е друг проблем, защото при safe_mode обикновено собственика на изпълнявания .php скрипт може да пише само в директории, на които е собственик (конфликътът е, че може .php owner да е различен от web server owner)... Но засега - относно правата на създадената директория пробвай нещо такова:
$my_dir = "/tmp/demo/demo124";

if ( !mkdir( $my_dir, 0777 ) )

{

	printf( "mkdir unsuccessful!<br />" );

}


if ( !chmod( $my_dir, 0777 ) )

{

	printf( "chmod unsuccessful!<br />" );

}

и кажи какви са правата на резултата. Между другото - как ги проверяваш правата?

...

С тези права (755), само собственикът на директорията (обикновено собственика на процеса на web server-а) (и root) може да пише в нея. Което всъщност е друг проблем, защото при safe_mode обикновено собственика на изпълнявания .php скрипт може да пише само в директории, на които е собственик (конфликътът е, че може .php owner да е различен от web server owner)...

Всъщност този друг проблем изглежда е по-сериозен. Направих малко експерименти с php и safe_mode = On. Нямах проблем при chmod на правата на новата директория на 0777, но след това не мога да пиша в нея sad.gif Наистина май трябва да се обърнеш към администраторите - аз не се сещам за решение, което може да мине бе промяна на параметри на php-то (php.ini).

  • Автор

Да правата ма директорията наистина са -0755, а не 400 както бях писала в началото.Благпдаря то divak за отговорите.Щом казваш , че няма как да избегна пробкема ще се обърн акъм администорите.Май ще трябва да изклу4ат safe_mod ? или не

Погледни какъв резултат ми върна от последния скрипт , които ми написа:

Warning: mkdir() [function.mkdir]: SAFE MODE Restriction in effect. The script whose uid is 10040 is not allowed to access / owned by uid 0 in /var/www/vhosts/inventar.fo/httpdocs/testmask.php on line 3

mkdir unsuccessful!

Warning: chmod() [function.chmod]: Unable to access /demo/demo124 in /var/www/vhosts/inventar.fo/httpdocs/testmask.php on line 8

Warning: chmod() [function.chmod]: open_basedir restriction in effect. File(/demo/demo124) is not within the allowed path(s): (/var/www/vhosts/inventar.fo/httpdocs:/tmp) in /var/www/vhosts/inventar.fo/httpdocs/testmask.php on line 8

chmod unsuccessful!

Здравей пак. Не знам дали администраторите ще се съгласят да изключат safe_mode, но за всеки случай би трябвало да ти предложат разумно решение на проблема.

Относно моя пример - извинявай, че не се сетих да ти спомена да смениш името на директорията "/tmp/demo/demo124" на нещо друго angry.gif. В общи линии трябва да е в поддиректория, на която ти (където ти = собственика на php файла) си собственик; и също да е поддиректория на някоя от изброените в open_basedir пътища...

А с това може би (ако не са го забранили по някакъв начин) ще видиш какви са параметрите на php-то:

<?php phpinfo(); ?>

Интересни в случая са тези, описани тук.

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

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.