2012-02-11 1 views
0

В рамках подготовки к моему переездом на сервере позже, я использую этот код (PHP), чтобы создать новый каталог, в котором будут храниться файлы пользователя:Разрешения localhost с php mkdir()?

function createNewUserFolder($newUserName) 
{ 
    $siteRoot = "http://" . $_SERVER['HTTP_HOST'] . "/myWebsite/"; 
    $newUserSubfolder = $siteRoot . $newUserName; 

    if (!mkdir($newUserSubfolder, 0755)) 
    { 
     echo "PROBLEM..."; 
    } 
} 

Я попытался 0644 разрешения не дало никаких результатов - Когда это выполняется, я получаю «ПРОБЛЕМУ ...». Я проверяю строку, содержащую полный путь, и это правильно - «http: // localhost/myWebsite/myNewUserSubfolder».

Так что я подозреваю, что проблема «http: // localhost/myWebsite /» в этой строке является проблемой. Но я не понимаю, почему - в конце концов, это PHP-код, запущенный на моем веб-сервере, поэтому почему мой php-код не может создать папку на моем веб-сервере?

+0

Каков результат 'ls -al' на $ siteRoot? И что вызвал пользователь веб-сервера? (Попробуйте echo 'whoami') – chelmertz

+2

попробуйте использовать реальный каталог ex:/var/www/myWebsite/с mkdir вместо http: // и посмотреть, работает ли это –

+0

ls -l не поддерживается в моей коробке Windows, а whoami из командной строки дает имя пользователя, которое я создал, когда я настраивал свою учетную запись пользователя в этом окне Windows (Vista). Кроме того, я попробую полностью пройти путь, но мой вопрос - * должен * я могу использовать http с/localhost/myWebsite с моим вызовом mkdir() - если нет, то почему нет --- это слепое место для меня. Приведенный выше код мог бы работать как на моих серверах разработки, так и на производстве, если я это понял. – wantTheBest

ответ

4

для окон среды вы можете сделать что-то вроде этого

$siteRoot = "c:\\path\\to\\siteroot\\myWebsite/"; 
$newUserSubfolder = $siteRoot . $newUserName; 

if (!mkdir($newUserSubfolder, 0755)) 
{ 
    echo "PROBLEM..."; 
} 

Попробуйте что

Или попробуйте использовать FTP, если есть FTP поддержка на сервере читайте здесь http://php.net/manual/en/book.ftp.php

+0

Jaspreet, какое-либо отношение к Гурбакшу Чахалу? Действительно классный парень, он вырос в 10 минутах от меня здесь, в Сан-Хосе (Силиконовая долина). Спасибо за ваш совет здесь, также @Vyktor, повторяющаяся тема в SO для меня - это желание принять несколько ответов, но я не могу, поэтому я стрелял в вас, и я очень благодарен вам за вашу помощь – wantTheBest

+0

Ну, я много слышал о GC. Я бы сказал, если бы он ждал еще 1 день about.me, тогда у меня был бы этот домен :), так что теперь я получил chahal.me :). Да, он, кажется, классный парень и с удовольствием встретится с ним когда-нибудь. Я желаю ему всего наилучшего и с удовольствием когда-нибудь его увижу. Но на сегодняшний день, кроме того, что мы разделяем нашу фамилию, я действительно не знаю его :(Я живу в Melbourne Aus btw. Я рад, что я вам помог. Кстати, я также запускаю блог здесь, это URL-адрес этого http: //jaspreetchahal.org. поддержка chahals :) tah! снова -jas –

2

Вы пытаясь создать каталог через http-протокол на «удаленном сервере», просто попробуйте сделать в оболочке linux:

mkdir "http://google.com/mydir" 

Http-сервер не знает, что это вы и AFAIK, он даже не поддерживает создание каталогов напрямую (через протокол HTTP без скрипта).

В любом случае mkdir работает только для протокола file:// (или, если хотите, обертки), который подразумевается во всех file system functions.

Для этого при запуске mkdir() с параметром /my/path оценивается как file:///my/path (который он правильно обрабатывает). Для http://... это просто неподдерживаемый протокол.