Здравейте.
Напоследък в този сайт зачестиха въпросите от начинаещи ползватели (най вече) на LAMP сървър, за това как да се справят с проблема с писането и четенето на файлове и папки в директорията /var/www.
Проблема най често е продиктуван от това, че повечето потребители идват от света на Уиндоус в който правата за достъп до места във файловата система е доста по свободен.
Със съжаление мога да кажа на тези потребители – малка част от опита ви с XAMPP или други програми за работа с Apache, PHP, Mysql и администрирането им под Уиндоус можете да пренесете в света на Юниксподобните системи.
Държа да отбележа че този урок не е единственото решения на някой проблеми които ще засегна. Както и че не е и най правилното за това наблягам:
НЕ ПРЕНАСЯЙТЕ ТОВА ЗНАНИЕ БУКВАЛНО НА РЕАЛЕН СЪРВЪР, БЕЗ ДА СТЕ ЗАПОЗНАТИ С ОСОБЕННОСТИТЕ НА СИГУРНОСТТА!!!
Така нека започнем по същество. Когато се сблъскате с съобщение от сорта на:
Permission denied
Това означава че нямате права – кратко и ясно. Особеното е в това че правата могат да бъдат 3 вида:
Права за собственик.
Права за група.
Права за всички останали.
Така че трябва да определите към коя от липсата на права принадлежите за да определите начина си на действие. Както и дали вие с вашия акаунт може да се справите с него.
В този урок няма да засегнем като цяло пълната идея за правата, понеже това е тема на друг и то никак кратък урок :) .
Нека разгледаме правата на сега занимаващата ни директория /var с помощта на командата ls с опции -la.
В изхода на командата трябва да се обърне внимание на две неща:
drwxr-xr-x 3 root root 4096 2010-11-21 12:47 www
Правата върху файловете и директориите (в зелено).
Собственика и групата (в червено).
В нашият случай се сблъскваме с два проблема:
Нямаме права като собственик - root root.
Нямаме права и като „всички останали“(последният х) и ограничения като член на група (предпоследното xr) - drwxr-xr-x
Ако не сте запознати с идеята за правата от поредиците от букви в началото – трябва да седнете да почетете. И все пак вие трябва да започнете работа преди това нали, ето едно решение?!
Добро решение е като за начало да добавите една папка в /var/www в която вие да си имате права за писане и четене. Как това ще стане в конзолата:
sudo mkdir /var/www/ime_na_directoria
Командата mkdir няма да се изпълни без sudo отпред което временно ви дава права да пишете в директория /var/www/ като root или по разбираемо – администратор (идеята на sudo не е тема на този урок).
Я да видим какво се е получило:
drwxr-xr-x 2 root root 4096 2010-11-21 13:28 ime_na_directoria
Папката я има но правата не са задоволителни за свободно използване, какво да правим?
Ами най лесно е да я направил собственост на нашия потребител, нали.
sudo chown -R /var/www/ime_na_directoria
Заменете с името на вашия такъв като не използвате .
За всеки скучай хайде да изпълним и това (не е непременно нужно но...)
sudo chmod 775 -R /var/www/ime_na_directoria
Я да видим сега правата:
drwxrwxr-x 2 qaz root 4096 2010-11-21 13:28 ime_na_directoria
Да, поредността и количеството на буквите се е променило определено все пак я да видим дали без sudo можем да работим там:
echo ""> /var/www/ime_na_directoria/infophp.php
И да идем да видим в браузер какво се вижда:
http://localhost/ime_na_directoria/infophp.php
Я гледай ти какво нещо:
Проба за редакция:
echo ""> /var/www/ime_na_directoria/infophp.php
Ето!
Триене:
rm /var/www/ime_na_directoria/infophp.php
А?
ls /var/www/ime_na_directoria/infophp.php
ls: cannot access /var/www/ime_na_directoria/infophp.php: No such file or directory
Нека опростим нещата все пак. Каква работа имаме ние изобщо на нашия компютър във /var.
Дай да си го признаем рядко излизаме изобщо от /home. Защо да не накараме Апач да дойде при нас а не ние при него?!
Защо не, даже добра идея нека да го направим:
Вземаме любимия си текстов редактор (nano, vi, gedit. kate, netbeans :) ) и го пуснаме в действие.
sudo nano /etc/apache2/sites-available/default
И намираме и редактираме редовете:
DocumentRoot /var/www
и
И ги редактираме по подходящ начин:
DocumentRoot /home/user/directoria
и
Заменяте ..../user/directoria с името на вашия потребител и папка която си избирате.
Рестартираме Апач:
sudo /etc/init.d/apache restart
Може да направите магията с ехото от горния пример или да си работите с вашия редактор за скриптове и ги слагате в нужната директория.
Това е от мен, простичко надявам се ясно ако има въпроси знаете къде и как да ги зададете :)
Стоян Германов