PHP - Создать каталог на другом сервере - PullRequest
1 голос
/ 05 марта 2011

У меня работает Wamp (сервер с именем изумруд) и Mamp на моем Mac.Люди регистрируются на Mamp.Emerald - это, в основном, файловый хостинг.

Emerald подключается к базе данных Mamp mysql для входа в систему пользователей.Однако я хочу создать каталоги для новых регистраций на Emerald с использованием PHP.

Как я могу это сделать?Я пытался использовать этот код:

$thisdir = "192.168.1.71";
$name = "Ryan-Hart";

if(mkdir($thisdir ."/documents/$name" , 0777)) 
{ 
   echo "Directory has been created successfully..."; 
}

Но не повезло.По сути, ему необходимо подключиться к другому серверу и создать каталог на имя пользователя.

Надеюсь, это понятно.

Ответы [ 4 ]

2 голосов
/ 05 марта 2011

Вы не можете создавать каталоги через http.Вам необходимо подключение файловой системы к удаленному местоположению (локальный жесткий диск или сетевой ресурс, например).

Самый простой способ, который не требует настройки FTP, SSH или общего сетевого ресурса, - это поместить PHP-скрипт на Emerald:

<?php

 // Skipping sanitation because it's only going to be called
 // from a friendly script. If "dir" is user input, you need to sanitize 
 $dirname = $_GET["dir"];

 $secret_token = "10210343943202393403";
 if ($_GET["token"] != $secret_token) die ("Access denied");
 // Alternatively, you could restrict access to one IP

 error_reporting(0); // Turn on to see mkdir's error messages

 $success = mkdir("/home/www/htdocs/docs/".$dirname);
 if ($success) echo "OK"; else echo "FAIL";

и вызвать его с другого сервера:

$success = file_get_contents("http://192.168.1.71/create_script.php?token=10210343943202393403&dir=HelloWorld");

echo $success;  // "OK" or "FAIL"
1 голос
/ 05 марта 2011

Универсального метода для доступа к файловым системам удаленного сервера не существует. Для этого вы должны использовать протокол передачи файлов и серверное программное обеспечение. Один из вариантов будет SSH , что, однако, требует некоторой настройки.

$thisdir = "ssh2.sftp://user:pass@192.168.1.71/directory/";

В Windows вам может быть проще работать с FTP, поэтому использование ftp: // url в качестве каталога может работать.

В качестве последней альтернативы вы можете включить WebDAV (только метод PUT работает для передачи файлов, а не для создания каталогов) на вашем веб-сервере WAMP. (Но тогда вы, вероятно, не сможете использовать необработанные файловые функции PHP, возможно, вам нужен класс-оболочка или curl для его использования.)

1 голос
/ 05 марта 2011

Создайте сценарий на другом сервере, который создает каталог, и вызывайте его удаленно.Убедитесь, что у вас есть проверка безопасности (+ хотя бы простой пароль)

0 голосов
/ 27 марта 2019

Я знаю, что это старо, но я думаю, что это может быть полезным для меня, по моему опыту:

if(mkdir($thisdir ."/documents/name" , 0777)) 

не работает, мне нужно сделать это:

mkdir($thisdir, 0777);
mkdir($thisdir ."/documents" , 0777);
mkdir($thisdir ."/documents/name" , 0777));

надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...