Как запустить скрипт оболочки bash из magento? - PullRequest
2 голосов
/ 29 марта 2012
<?php
    require_once 'abstract.php';

    class Mage_Shell_Snapshot extends Mage_Shell_Abstract
    {
    public function _snapshot()
    {
        if(!Mage::isInstalled()) 
        {
            echo "Application is not installed yet, please complete install wizard first.";
            exit;
        }
        # Initialize configuration values
        $connection = Mage::getConfig()->getNode('global/resources/default_setup /connection');
        $rootpath = $this->_getRootPath();
        $snapshot = $rootpath.'testing';

        # Create the snapshot directory if not exists
        $io = new Varien_Io_File();
        $io->mkdir($snapshot);

        include('/home/test/public_html/xmlapi.php');
        $cp_user="test";
        $cp_pass="test123";
        $db_host="localhost";
        $db_name="test_insatller";
        $db_user="test_test";
        $db_pass="home123";
        $url="http://201.40.548.550/testing/";
        $ad_user="admin";
        $ad_pass="sk12121";
        $ad_email="indies.tester@gmail.com";
        $xmlapi = new xmlapi($db_host);
        $xmlapi->set_port(2083);
        $xmlapi->password_auth($cp_user,$cp_pass);
        $xmlapi->set_debug(1);
        //create database
        $xmlapi->api1_query($cp_user,"Mysql", "adddb", array($db_name));
        //create user
        $xmlapi->api1_query($cp_user,"Mysql", "adduser", array($db_user,$db_pass)); 
        //add user to database
        $xmlapi->api1_query($cp_user,"Mysql", "adduserdb", array($db_name,$db_user,'all'));
        $command = '/home/indieste/public_html/function.sh '.$db_host.' '.$db_name.' '.$db_user.' '.$db_pass.' '.$url.' '.$ad_user.' '.$ad_pass.' '.$ad_email; 
        echo $command;
        system($command);
        Mage::log($command);

    }
    public function run()
    {
        if ($this->getArg('testing'))
        {
            $this->_snapshot();
        }
        else
        {
            echo $this->usageHelp();
        }
    }

    public function usageHelp()
    {
        global $argv;
        $self = basename($argv[0]);

        USAGE;
    }
    }
   $shell = new Mage_Shell_Snapshot();
    $shell->run();

Когда я запускаю этот snapshot.php из папки magento->shell->snapshot.php, используя шпаклевку, он не создает базу данных и пользователя.

Я создаю базу данных и пользователя в cpanel, используя xmlapi.php, и запускаю этот файл запуска function.sh, чтобы установить magento в корневой каталог cpanel. Это также не дает мне никакой ошибки. Итак, достаточно ли этого кода для запуска сценария оболочки bash (function.sh) из magento?

function.sh файл содержит команду, связанную с загрузкой magento с сервера, извлечением ее и установкой в ​​корневой каталог cpanel с использованием имени хоста, hostpassword, dbname, dbuser, dbpassword, пользователя admin, пароля администратора.

Если у кого-нибудь есть связанная ссылка для запуска сценария оболочки из magento, то, пожалуйста, дайте мне и скажите, как запустить сценарий оболочки из magento?.

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Сценарии оболочки можно запускать из любых приложений php двумя способами.

  1. Используйте функцию exec () для запуска скрипта.

  2. используйте backticks (``) и укажите команду для запуска в тиках. например:

$ variable = `` ls; ls внутри спины.

дает вывод ls в переменную.

Будьте уверены, если вы используете это для приложения, потому что это одна серьезная проблема с точки зрения безопасности.

2 голосов
/ 29 марта 2012

см. Статью:http://www.magentocommerce.com/wiki/how_to_-_import_manufacturers_or_any_other_option_attribute_setКоторый использует скрипт оболочки для импорта производителей.

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

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