система ("cp /1.txt /2.txt", $ out);просто не работает? - PullRequest
0 голосов
/ 21 октября 2011

Я пытаюсь работать с функциями системы php (exec) для запуска некоторых команд в linux, но это просто не работает!

Я вошел в систему с пользователем root.Я создал файл "/1.txt" и затем запустил этот php-скрипт через сервер apache: system("sudo cp /1.txt /2.txt", $out);, но он не копирует файл.

Можете ли вы объяснить, почему он не работает?(Я новичок в Linux, пожалуйста, объясните)

Ответы [ 2 ]

2 голосов
/ 21 октября 2011

Удалите sudo и дайте разрешения пользователю apache на /1.txt и /2.txt, он должен работать.

Если /2.txt не существует, создайте каталог, поместите1. Введите текст в этот каталог и дайте разрешения пользователю apache как для каталога, так и для файла.

0 голосов
/ 01 апреля 2012

/ 1.txt и /2.txt находятся на самом верхнем уровне файловой системы - это то, к чему вы стремитесь?В любом случае это не очень хорошая идея.

Я бы порекомендовал иметь область, в которой находятся ваши файлы, например / var / webapp-files /, чтобы вы могли сделать что-то вроде:

define('WEBAPP_FILES_LOCATION', '/var/webapp-files');
system("cp ".WEBAPP_FILES_LOCATION."/1.txt ".WEBAPP_FILES_LOCATION."/2.txt", $out);

ПРИМЕЧАНИЕ: я определил константу для местоположения, потому что она понадобится во многих разных местах, и вы не хотите начинать повторяться, если хотите изменить это в любое время.

Для этого нужно выполнить системную команду:

cp /var/webapp-files/1.txt /var/webapp-files/2.txt

Что должно быть успешно , если ваш каталог / var / webapp-files имеет доступ на запись для вашего пользователя apache.

Однако ... В PHP есть встроенная функция для копирования, которую я бы рекомендовал использовать вместо более общей и опасной системы ().Вы можете прочитать о copy () в http://uk3.php.net/manual/en/function.copy.php Для этого понадобятся полные пути, как в cp, так что вы можете изменить мой предыдущий пример на:

define('WEBAPP_FILES_LOCATION', '/var/webapp-files');
$copySucceeded = copy(WEBAPP_FILES_LOCATION."/1.txt", WEBAPP_FILES_LOCATION."/2.txt");
echo "The copy attempt ". ($copySucceeded ? "succeeded" : "failed");

Надеюсь, это поможет.

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