Вопрос по присвоению прав на СОЗДАВАЕМУЮ папку из СКРИПТА.
Если кратко - если папку создать из скрипта (скрипт намеренно прост для выявления причины проблемы):
<?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) Залил в него файл
Результат со всеми ответами сервера
Чудес не бывает, если папка создалась, значит доступ есть, следовательно и файл должен залится
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 пытаешься записать, то может и не пустить..
Посмотри на Owner'а, может по FTP аккаунту у тебя полный доступ к серверу, а через скрипт, не полный, если так, то папки будут с разными родителями.
как на вот на фото.
Родители
1) TOOLS - это я скриптом создаю
2) NOBODY - Это админские права
Смысл в том, что если скриптом создана папка, файл тоже в нее запишется скриптом, а если ты скриптом создаешь папку, а через ftp пытаешься записать, то может и не пустить..
Спустя 22 минуты, 19 секунд (15.02.2012 - 12:56) slavikx3m написал(а):
ВОТ! это то что я не заметил!!!!!!!! у меня разные Owner... Спасибо![u]
Не покажусь сильно наглым, спросив как уровнять их в правах, или как переназначить собственника apache в "правильный"?!
Не покажусь сильно наглым, спросив как уровнять их в правах, или как переназначить собственника 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](http://phpforum.ru/html/emoticons/blink.gif)
Ни один из них таковым не является.
Кстати фтп пользователь входит в группу apache?
Спустя 18 минут, 58 секунд (15.02.2012 - 15:20) slavikx3m написал(а):
Цитата (killer8080 @ 15.02.2012 - 12:01) | ||
Причем здесь суперпользователь? ![]() Ни один из них таковым не является. Кстати фтп пользователь входит в группу 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) | ||||
Нет, по фтп ты заходишь под пользователем metrа, а не root.
Потому что там отображается владелец файла, кто создал тот и владелец. Обрати внимание на права и владельцев всей цепочки каталогов. Если например владелец папки upload юзер metrа и права 755, то апач туда ничего записать не сможет. |
да но корневая папка httpdocs, где весь сайт, создана metrа, т.е. если я нахожусь в httpdocs(принадлежащий метра)/test(принадлежащий метра)/1(принадлежащий апач) и запускаю из папки "1" test.php, который должен создать в ней папку "big" (получается тоже принадлежащей апач), тогда у меня ничего не получиться...
словом если на пути есть папка созданная не "апач", то гуляю я вальсируя?!
Спустя 10 минут, 51 секунда (15.02.2012 - 15:52) killer8080 написал(а):
slavikx3m
речь идет о шаред хостинге?
Обычно под пользователя создается одноименная группа, а в неё добавляется пользователь апач. Соответственно каталог принадлежащий пользователю, делается доступным на запись его группе, т.е. апачу. Собственно, если php может создавать папку, то права на запись у него есть.
речь идет о шаред хостинге?
Обычно под пользователя создается одноименная группа, а в неё добавляется пользователь апач. Соответственно каталог принадлежащий пользователю, делается доступным на запись его группе, т.е. апачу. Собственно, если php может создавать папку, то права на запись у него есть.
Спустя 2 часа, 16 минут, 15 секунд (15.02.2012 - 18:08) walerus написал(а):
Вот затестил на виртуалке, создал 2ве папки через FTP менеджер,
1) 111 - установил права 655
2) 222 - установил права 755
3) 333 - создаст скрипт и в нее же запишет файл, все наглядно показывается, попробуй, какие у тебя будут результаты.
файл index.php
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 |
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 ? как я написал...
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
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.
установи права на папки созданные через фтп 770.
Спустя 23 минуты, 40 секунд (16.02.2012 - 11:09) slavikx3m написал(а):
хоть это и очевидное ограничение, и без того ограниченных прав... но я сделал для 333 папки... если использовать скрипт walerus, то вот выдало:
0755
Write 111 - FALSE
0777
Write 222 - TRUE
0770
Write 333 - FALSE
что в принципе и следовало ожидать... Мы ведь разобрались дело именно в том от чьего имени действует скрипт, права тут ни причём.
Или смысл был в ином, и я что-то не понял?
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 - но файл не записывается....
У папки и файла овнер, один и тот же, стучи хостерам, я так думаю что то там не то..
Write 333 - TRUE - В папку писать можно,
Save File - FALSE - но файл не записывается....
У папки и файла овнер, один и тот же, стучи хостерам, я так думаю что то там не то..
Спустя 7 минут, 45 секунд (16.02.2012 - 16:20) slavikx3m написал(а):
Гениальный ответ (ПЕРВЫЙ ОТВЕТ):
Попробуйте выставлять доступ к папке mode 777. Тогда в нее сможет писать любой пользователь в вашем домене.
Кауцкий и Энгельс в своей переписке нервно курят...
Попробуйте выставлять доступ к папке mode 777. Тогда в нее сможет писать любой пользователь в вашем домене.
Кауцкий и Энгельс в своей переписке нервно курят...