Система PHP ("cd \");не работает - PullRequest
3 голосов
/ 28 ноября 2010

Я использовал системные команды через php-файл ..cd \ работал, а затем, после нескольких попыток, остановился: что бы я ни делал

<?php
    $command = array("cd \","dir"); 
    $result = system($command[0], $return);
?>

Ответы [ 7 ]

3 голосов
/ 28 ноября 2010

Windows поддерживает прямую косую черту /, а также обратную косую черту \, поэтому, используя только прямые косые черты, вы должны быть кросс-совместимы и меньше ухудшаться в долгосрочной перспективе.

<?php
    $command = array("cd /","dir");
    $result = system($command[0], $return);
?>

Wiki Path_Computing


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

2 голосов
/ 29 ноября 2010

Я думаю, я понял проблему .. команда system () в PHP не создает экземпляр cmd.exe вместо этого он только выполняет команду и завершает работу. Вот почему, когда вы меняете каталог с помощью команды CD ... каталог экземпляра, созданного system (), изменяется и затем завершается. Надеюсь, моя теория верна xD

2 голосов
/ 28 ноября 2010

Попробуйте

$command = array("cd \\","dir"); 
0 голосов
/ 09 мая 2017

Почему вы не можете использовать две команды в одном вызове системы (), используя разделитель?

<?php
$result = system("cd \;".$command[0], $return);?>
0 голосов
/ 28 ноября 2010

В моем тестировании (на Win 7 и XP) я обнаружил, что необходимо экранировать \ для каталога (т. Е. Использовать \\ вместо). Или вы можете использовать косую черту. Кроме того, почему бы не использовать функцию PHP chdir вместо системного вызова?

<?php
    echo getcwd() . "\n";
    chdir("\\");
    echo getcwd() . "\n";
?>

Редактировать в ответ на комментарий «... я пытаюсь создать cmd в браузере. ...»: системная функция просто запускает указанную вами команду и возвращает. Это не будет (напрямую) влиять на процесс, который вызвал системную команду. Таким образом, системный вызов с командой изменить каталог не повлияет на рабочий каталог программы PHP, если вы пытаетесь это сделать.

0 голосов
/ 28 ноября 2010

PHP имеет свою собственную команду изменения каталога: http://us3.php.net/manual/en/function.chdir.php. Однако это может не совсем то, что вы хотите.

0 голосов
/ 28 ноября 2010

в моде Linux:

$command = array("cd \\","dir");

в моде windows:

$command = array("cd /","dir");
...