локальные права доступа с php mkdir ()? - PullRequest
1 голос
/ 11 февраля 2012

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

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 код создать папку на моем веб-сервере?

Ответы [ 2 ]

5 голосов
/ 11 февраля 2012

для сред Windows вы можете захотеть сделать что-то подобное

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

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

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

Или попробуйте использовать FTP, если на вашем сервере есть поддержка FTP.1007 *

2 голосов
/ 11 февраля 2012

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

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

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

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

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

...