Запустите скрипт оболочки через PHP - PullRequest
1 голос
/ 01 апреля 2011

Есть ли способ запустить следующий скрипт через PHP

http://www.magentoadvisor.com/magento-backup/tutorial-magento-backup-scripts-part-2/

Я пытался использовать exec, shell_exec, system, но ни один из них не работает.Они работают, когда я пробую exec ('whois domain.com'), хотя, должно быть, я что-то не так делаю !!

Если это невозможно, кто-нибудь знает о хорошем способе резервного копирования Magento черезPHP, к сожалению, у меня нет доступа по SSH.

Спасибо

ОБНОВЛЕНИЕ Это код, который я пытаюсь использовать

system('magento-backup-script.bin -date', $output); 
var_dump($output);

Вывод: int (127)

Php безопасный режим выключен

ОБНОВЛЕНИЕ:

Мне удалось заставить меня работать, скопировав скрипт в файл PHP и используя оператор тактики, чтобызапустить команду.Спасибо всем за помощь всем

Ответы [ 3 ]

1 голос
/ 01 апреля 2011

Похоже, что на вашем веб-хосте включен безопасный режим, который блокирует ваш вызов system(). Загрузите php-файл на ваш веб-сервер, содержащий следующий код, а затем создайте ссылку на него здесь (или, если сервер недоступен для общественности, поместите его в DropBox или где-либо еще). Это скажет нам, какие функции отключены на вашем хостинге / если безопасный режим включен.

<?php 
  phpinfo();
?>
1 голос
/ 01 апреля 2011

Использовать команду system () в PHP.

system () аналогична версии функции на C в том смысле, что она выполняет данную команду и выводит результат.Системный вызов () также пытается автоматически очистить выходной буфер веб-сервера после каждой строки вывода, если PHP работает как серверный модуль.

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

( Из руководства по PHP: system ).

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

вы можете использовать system для выполнения команд в системе, например:

Если ваша строка называется backup и находится в / home/ rob / scripts / backup / megento вы можете выполнить команду следующим образом:

if(false === ($line = system("/home/rob/scripts/backup/megento/backup",$result)))
{
    echo "Error " . (int)$result . ": Backup failed: (" .  $line . ")\n";
}

, если вы получаете результат 127 , это называется выходомcode, int 127 обычно означает, что скрипт bas пытался выполнить команду, но команда не была найдена.

глядя на скрипт bash, он использует команду tar для создания архива.Вы убедились, что tar существует и установлен на сервере.

Вы также можете направить вывод в журнал ошибок, чтобы увидеть, что происходит:

system("/home/rob/scripts/backup/megento/backup >> results.txt");
echo file_get_contents("/home/rob/scripts/backup/megento/results.txt");

или, если это приводит кПустой файл может быть проблемой с разрешением, попробуйте следующее:

exec("/home/rob/scripts/backup/megento/backup",$full_result);
var_dump($full_results);// Array I believe.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...