system () не работает в php с использованием Windows Server 2003 - PullRequest
3 голосов
/ 16 ноября 2009

Я должен извлечь Cabfile (. CAB) на сервере. Я нахожу такой сценарий, который извлекает CAB-файл, но я еще не получил его. Так что теперь я пытаюсь извлечь с помощью cabarc.exe. Но я сталкиваюсь с проблемой, что когда я запускаю команду через командную строку, она работает нормально, но когда я даю ту же команду функции system () или exec () в php, это не работает. код следующий:

    $command = "c:\\exe\\cabarc X c:\\cab\\data.cab c:\\data\\";
if(($output = system($command,$return) != false)
{
  echo "$return";
}

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

спасибо

Ответы [ 3 ]

1 голос
/ 04 мая 2010

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

1 голос
/ 06 мая 2010

Другая проблема может заключаться в том, что программе не разрешено запускать cmd.exe, возможно, проверьте, может ли учетная запись IUSR выполнять эту программу, поскольку система должна вызывать оболочку.

1 голос
/ 16 ноября 2009

2-й аргумент функции system передается по ссылке, поэтому он должен быть инициализирован вашим кодом. Кроме того, вы должны проверить на ложность, используя !==, а не !=, потому что он проверяет тип в дополнение к значению. Кроме того, похоже, что в вашем выражении if есть круглые скобки. Попробуйте это:

$command = "c:\\exe\\cabarc X c:\\cab\\data.cab c:\\data\\";
$return = -1;
$output = system($command, $return);
if($output !== false)
{
    echo "Return value is: " . $return . "\r\n";
    echo "Output is:\r\n" . $output . "\r\n";
}

Если это не решит вашу проблему, убедитесь, что у пользователя PHP есть разрешения на доступ к файлу.

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