выполнение команд centos из скрипта php - PullRequest
0 голосов
/ 03 ноября 2011

Я работаю на сервере Centos, и мне нужно загрузить данные с другого сервера на сервер Centos в формате tbz, затем мне нужно извлечь его, и после завершения извлечения мне нужно импортировать данные из него в таблицу базы данных mysql. .

что я делаю Получение данных с сервера размером около 700 МБ, но когда я выполняю команду для их извлечения и других, ничего не происходит.

$files =   array('20111101.tbz', '20111101.tbz.md5' ,'20111102.tbz' ,'20111102.tbz.md5') ;

    //folder names of the folders formed
    $folder1 = "20111101";
    $folder3 = "20111102";

    //command to extract all the downloaded .tbz files
    $command1 = "cd /var/www/html/mywork1/mywork2/mywork3/";
    exec($command1." 2>&1", $output);
    $command2 = "tar -xjf ".$files[0];
    exec($command2." 2>&1", $output);
    $command4 = "tar -xjf ".$files[2];
    exec($command4." 2>&1", $output);

    //command to populate the data into the database
    $command6 = "cd /var/www/html/mywork1/mywork2/mywork3/mywork4";
    exec($command6." 2>&1", $output);
    $command7 = "./runit.py /var/www/html/mywork1/mywork2/mywork3/$folder1";
    exec($command7." 2>&1", $output);
    $command9 = "./runit.py /var/www/html/mywork1/mywork2/mywork3/$folder3";
    exec($command9." 2>&1", $output);

    //command to remove the folders created after population of data
    $command10 = "rm -rf $folder1";
    exec($command10." 2>&1", $output);
    $command11 = "rm -rf $folder3";
    exec($command11." 2>&1", $output);

    foreach ($files as $file) 
    {
        //command to remove all .tbz files downloaded.
        $command12 = "rm -rf $file";
        exec($command12." 2>&1", $output);
    }

Я просто выполняю команды, но ничего не делаю. Но когда я пытаюсь все эти команды вручную на сервере, они работают нормально. Кто-нибудь может направить меня в этом? Какой должен быть правильный подход для этого?

1 Ответ

1 голос
/ 03 ноября 2011

Вы не можете exec("cd /some/dir");, так как это приведет к запуску оболочки, которая перейдет в этот каталог и затем завершится. Для вашей программы PHP это ничего не делает & mdash; рабочий каталог не изменится.

Вам нужно будет chdir('/some/dir') or die("Cannot change directory");.

...