[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Присвоение прав папке из скрипта не работает
slavikx3m
Здравия всем в эти - за 20С (строго говоря, теперь минус за десять, но тоже не Ипанема ни разу)!

Вопрос по присвоению прав на СОЗДАВАЕМУЮ папку из СКРИПТА.

Если кратко - если папку создать из скрипта (скрипт намеренно прост для выявления причины проблемы):

<?php
$new_lot = "2";
$target = "upload/big/$new_lot/1";
if(is_dir($target))
{
echo ("$target существует");
}
else
{
mkdir("upload/big/2/1/");
chmod("upload/big/2/1/", 0777);
echo ("$target саздан!");
}
?>


то папка создаётся с правами 0777, но всё равно в неё нельзя записать файл (запись так же из скрипта). НО ЕСЛИ РУЧКАМИ создать папку и присвоить ей 777, с помощью FTP-менеджера, то всё гуд!!!

Такое происходить на сервере "А", а если на своём делаю туже операцию то всё как надо работает (и первый и второй серверы - виртуальный хостинг).

Может кто-то сталкивался с таким каламбуром? Помогите, поделитесь опытом, пожалуйста!



Спустя 58 минут, 51 секунда (15.02.2012 - 11:24) walerus написал(а):
Какую ошибку при записи, скрипт возвращает? error_reporting(E_ALL); и покажи как ты сохраняешь файл, сделай вообще кусок кода.
1) Создал папку
2) Залил в него файл
Результат со всеми ответами сервера

Чудес не бывает, если папка создалась, значит доступ есть, следовательно и файл должен залится

Спустя 51 минута, 48 секунд (15.02.2012 - 12:15) slavikx3m написал(а):
Может я не правильно или не полно объяснил. Суть в следующем. Никакой ошибки! Папка создаётся, по скрипту с полными правами, FTP-менеджер говорит что права 777, но записать туда файл нельзя. Однако если создать папку ручками через FTP, и присвоить полные права, то ТОТ ЖЕ скрипт записывает файл.
Я не на чудо надеюсь, а на опыт. Иногда решение проблемы на поверхности, но либо по неопытности (ИМЕННО ПО ЭТОМУ Я ТУТ ВОПРОС ВЫЛОЖИЛ), либо просто потому что "глаз замыливается" (ЧТО В ДАННОМ ОБЪЁМЕ КОДА, и ПРОВЕРКИ ЕГО РАБОТОСПОСОБНОСТИ НА ВТОРОМ СЕРВЕРЕ мало вероятно) решение ускользает.

Спустя 17 минут, 46 секунд (15.02.2012 - 12:33) walerus написал(а):
Окей, тогда и правда проблема на поверхности, только ты немного загадками говоришь:
Цитата
FTP-менеджер говорит что права 777, но записать туда файл нельзя.
Нельзя записать туда файл используя FTP менеджер ? или скриптом пытаешься записать в папку файл ?

Посмотри на Owner'а, может по FTP аккаунту у тебя полный доступ к серверу, а через скрипт, не полный, если так, то папки будут с разными родителями.
как на вот на фото.

Родители
1) TOOLS - это я скриптом создаю
2) NOBODY - Это админские права

Смысл в том, что если скриптом создана папка, файл тоже в нее запишется скриптом, а если ты скриптом создаешь папку, а через ftp пытаешься записать, то может и не пустить..

Спустя 22 минуты, 19 секунд (15.02.2012 - 12:56) slavikx3m написал(а):
ВОТ! это то что я не заметил!!!!!!!! у меня разные Owner... Спасибо![u]

Не покажусь сильно наглым, спросив как уровнять их в правах, или как переназначить собственника apache в "правильный"?!


Спустя 2 минуты, 42 секунды (15.02.2012 - 12:58) slavikx3m написал(а):
Вот скрин...

Спустя 16 минут, 38 секунд (15.02.2012 - 13:15) walerus написал(а):
Хостинг не свой я так понял, можно написать админам что бы как то решили эту проблему и сделали одинакового овнера если это возможно.

Спустя 5 минут, 18 секунд (15.02.2012 - 13:20) slavikx3m написал(а):
Я попробывал через chown, но не получилось, он этот оператор игнарирует... или я его не правильно применил, что скорее всего:

<?php
$new_lot = "2";
$target = "upload/big/$new_lot/1";
$user_name = "metra";


if(is_dir($target))
{
echo ("$target существует");
}
else
{
mkdir($target);
chown($target, $user_name);
chmod($target, 0777);
echo ("$target саздан!");
}
?>


Да хостинг не мой, связываться с админами, по крайней мере с теми, связь с которыми у меня есть, с позволения сказать, геморойно, да и толку будет с гулькин нос. Если делать все через представителей хостинга, то нужно будет вышестоящее руководство беспокоить. Я учту этот вариант, но приберегу его как "последнюю пулю".

Спустя 1 час, 27 минут, 14 секунд (15.02.2012 - 14:47) walerus написал(а):
Цитата
bool chown ( string filename, mixed user )

Осуществляет попытку изменения владельца файла с именем filename на владельца, чье имя передано в параметре user (в виде числа или строки). Только суперпользователь может изменять владельца файла.


Когда отрабатывает скрипт, - он считается суперпользователем, а когда заходишь по ftp - ты не суперпользователь получается, вот и все дела.

Спустя 13 минут, 44 секунды (15.02.2012 - 15:01) killer8080 написал(а):
Цитата (walerus @ 15.02.2012 - 13:47)
Когда отрабатывает скрипт, - он считается суперпользователем, а когда заходишь по ftp - ты не суперпользователь получается, вот и все дела.

Причем здесь суперпользователь? blink.gif
Ни один из них таковым не является.
Кстати фтп пользователь входит в группу apache?

Спустя 18 минут, 58 секунд (15.02.2012 - 15:20) slavikx3m написал(а):
Цитата (killer8080 @ 15.02.2012 - 12:01)
Цитата (walerus @ 15.02.2012 - 13:47)
Когда отрабатывает скрипт, - он считается суперпользователем, а когда заходишь по ftp - ты не суперпользователь получается, вот и все дела.

Причем здесь суперпользователь? blink.gif
Ни один из них таковым не является.
Кстати фтп пользователь входит в группу apache?

Я уже погуглил, прилично, но сдаётся мне недостаточно потому что, не результативно. пользователя root или суперпользователя тоже читал, но уже после того как выложил пример последнего скрипта.

walerus - по моему Вы немного перепутали, но суть ясна. когда я из скрипта записываю файл я НЕ суперпользователь, а с FTP - являюсь таковым. Но все равно СПАСИБО!

killer8080 вот на вопрос входит ли фтп пользователь в группу apache не могу ответить просто не знаю как это узнать. Но поскольку записываемый файл, залитый через FTP, помечен как принадлежащий metrа, а не аpаche, думаю что нет... Хотя, наверное я вообще не о том рассуждаю.

Спустя 13 минут, 30 секунд (15.02.2012 - 15:34) killer8080 написал(а):
Цитата (slavikx3m @ 15.02.2012 - 14:20)
когда я из скрипта записываю файл я НЕ суперпользователь, а с FTP - являюсь таковым.

Нет, по фтп ты заходишь под пользователем metrа, а не root.
Цитата (slavikx3m @ 15.02.2012 - 14:20)
killer8080 вот на вопрос входит ли фтп пользователь в группу apache не могу ответить просто не знаю как это узнать. Но поскольку записываемый файл, залитый через FTP, помечен как принадлежащий metrа, а не аpаche, думаю что нет...

Потому что там отображается владелец файла, кто создал тот и владелец.
Обрати внимание на права и владельцев всей цепочки каталогов. Если например владелец папки upload юзер metrа и права 755, то апач туда ничего записать не сможет.

Спустя 7 минут, 33 секунды (15.02.2012 - 15:41) slavikx3m написал(а):
Цитата (killer8080 @ 15.02.2012 - 12:34)
Цитата (slavikx3m @ 15.02.2012 - 14:20)
когда я из скрипта записываю файл я НЕ суперпользователь, а с FTP - являюсь таковым.

Нет, по фтп ты заходишь под пользователем metrа, а не root.
Цитата (slavikx3m @ 15.02.2012 - 14:20)
killer8080 вот на вопрос входит ли фтп пользователь в группу apache не могу ответить просто не знаю как это узнать. Но поскольку записываемый файл, залитый через FTP, помечен как принадлежащий metrа, а не аpаche, думаю что нет...

Потому что там отображается владелец файла, кто создал тот и владелец.
Обрати внимание на права и владельцев всей цепочки каталогов. Если например владелец папки upload юзер metrа и права 755, то апач туда ничего записать не сможет.

да но корневая папка httpdocs, где весь сайт, создана metrа, т.е. если я нахожусь в httpdocs(принадлежащий метра)/test(принадлежащий метра)/1(принадлежащий апач) и запускаю из папки "1" test.php, который должен создать в ней папку "big" (получается тоже принадлежащей апач), тогда у меня ничего не получиться...


словом если на пути есть папка созданная не "апач", то гуляю я вальсируя?!

Спустя 10 минут, 51 секунда (15.02.2012 - 15:52) killer8080 написал(а):
slavikx3m
речь идет о шаред хостинге?
Обычно под пользователя создается одноименная группа, а в неё добавляется пользователь апач. Соответственно каталог принадлежащий пользователю, делается доступным на запись его группе, т.е. апачу. Собственно, если php может создавать папку, то права на запись у него есть.

Спустя 2 часа, 16 минут, 15 секунд (15.02.2012 - 18:08) walerus написал(а):
Вот затестил на виртуалке, создал 2ве папки через FTP менеджер,
1) 111 - установил права 655
2) 222 - установил права 755
3) 333 - создаст скрипт и в нее же запишет файл, все наглядно показывается, попробуй, какие у тебя будут результаты.


файл index.php
<?php

// Название первой папки '111', создана через FTP менеджер и установлены права 655 принудительно
$perms = fileperms('111'); // Получаем сведения о правах ( результат 0655 )
echo substr(sprintf('%o', $perms ), -4)."<br>";

if ( is_writable('111') )
echo "Write 111 - TRUE";
else
echo "Write 111 - FALSE";

echo "<hr>";

// Название первой папки '222', создана через FTP менеджер и установлены права 755 по умолчанию
$perms = fileperms('222'); // Получаем сведения о правах ( результат 0755 )
echo substr(sprintf('%o', $perms ), -4)."<br>";

if ( is_writable('222') )
echo "Write 222 - TRUE";
else
echo "Write 222 - FALSE";

echo "<hr>";

// Название третьей папки '333', проверяем есть ли папка, если нету, создаем ее скриптом
if ( !file_exists( '333' ) )
{
echo "Create dir 333<br>";
mkdir( '333', 0777 );
chmod( '333', 0777 );
}

$perms = fileperms('333'); // Получаем сведения о правах ( результат 0777 )
echo substr(sprintf('%o', $perms ), -4)."<br>";

if ( is_writable('333') )
{
echo "Write 333 - TRUE<br>";

// Пробуем скопировать файл в директорию
echo "Save File ";
if ( copy( 'index.php', '333/index.php' ) )
echo " - TRUE";
else
echo " - FALSE";
}
else
echo "Write 333 - FALSE";

echo "<hr>";




Спустя 7 минут, 7 секунд (15.02.2012 - 18:15) slavikx3m написал(а):
Цитата (walerus @ 15.02.2012 - 15:08)
Вот затестил на виртуалке, создал 2ве папки через FTP менеджер,
1) 111 - установил права 655
2) 222 - установил права 755
3) 333 - создаст скрипт и в нее же запишет файл, все наглядно показывается, попробуй, какие у тебя будут результаты.


файл index.php
<?php

// Название первой папки '111', создана через FTP менеджер и установлены права 655 принудительно
$perms = fileperms('111'); // Получаем сведения о правах ( результат 0655 )
echo substr(sprintf('%o', $perms ), -4)."<br>";

if ( is_writable('111') )
echo "Write 111 - TRUE";
else
echo "Write 111 - FALSE";

echo "<hr>";

// Название первой папки '222', создана через FTP менеджер и установлены права 755 по умолчанию
$perms = fileperms('222'); // Получаем сведения о правах ( результат 0755 )
echo substr(sprintf('%o', $perms ), -4)."<br>";

if ( is_writable('222') )
echo "Write 222 - TRUE";
else
echo "Write 222 - FALSE";

echo "<hr>";

// Название третьей папки '333', проверяем есть ли папка, если нету, создаем ее скриптом
if ( !file_exists( '333' ) )
{
echo "Create dir 333<br>";
mkdir( '333', 0777 );
chmod( '333', 0777 );
}

$perms = fileperms('333'); // Получаем сведения о правах ( результат 0777 )
echo substr(sprintf('%o', $perms ), -4)."<br>";

if ( is_writable('333') )
{
echo "Write 333 - TRUE<br>";

// Пробуем скопировать файл в директорию
echo "Save File ";
if ( copy( 'index.php', '333/index.php' ) )
echo " - TRUE";
else
echo " - FALSE";
}
else
echo "Write 333 - FALSE";

echo "<hr>";

0
Write 111 - FALSE
0
Write 222 - FALSE
Create dir 333
0755
Write 333 - TRUE
Save File - FALSE

Словом ты был прав проблема именно с Owner!!! Прийдется связываться с админами хостинга. Другового выхода пока гугол не выдал и я соответственно не нашел. Спасибо за потраченное время и силы!!!

По результатам отпишусь что получилось что ответили. (если интересно)

Спустя 38 минут, 39 секунд (15.02.2012 - 18:54) walerus написал(а):
slavikx3m - Да, отпишись конечно, может у кого то будет тоже проблема.

P.S. непонял - почему он даже права не показал на папки 111,222, ты их создавал на ftp ? как я написал...

Спустя 1 час, 5 минут, 40 секунд (15.02.2012 - 20:00) slavikx3m написал(а):
0755
Write 111 - FALSE
0777
Write 222 - TRUE
0777
Write 333 - TRUE
Save File - FALSE

Прости не внимателен был. Сейчас создал на FTP 111 и 222

Спустя 1 минута (15.02.2012 - 20:01) slavikx3m написал(а):
222 ручками добавил

Спустя 14 часов, 44 минуты, 31 секунда (16.02.2012 - 10:45) killer8080 написал(а):
slavikx3m
установи права на папки созданные через фтп 770.

Спустя 23 минуты, 40 секунд (16.02.2012 - 11:09) slavikx3m написал(а):
хоть это и очевидное ограничение, и без того ограниченных прав... но я сделал для 333 папки... если использовать скрипт walerus, то вот выдало:
0755
Write 111 - FALSE
0777
Write 222 - TRUE
0770
Write 333 - FALSE
что в принципе и следовало ожидать... Мы ведь разобрались дело именно в том от чьего имени действует скрипт, права тут ни причём.
Или смысл был в ином, и я что-то не понял?

Спустя 5 часов, 3 минуты, 28 секунд (16.02.2012 - 16:12) walerus написал(а):
slavikx3m Странно как то
Write 333 - TRUE - В папку писать можно,
Save File - FALSE - но файл не записывается....

У папки и файла овнер, один и тот же, стучи хостерам, я так думаю что то там не то..

Спустя 7 минут, 45 секунд (16.02.2012 - 16:20) slavikx3m написал(а):
Гениальный ответ (ПЕРВЫЙ ОТВЕТ):

Попробуйте выставлять доступ к папке mode 777. Тогда в нее сможет писать любой пользователь в вашем домене.

Кауцкий и Энгельс в своей переписке нервно курят...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.