2009-11-16 3 views
3

Мне нужно извлечь cabfile (.cab) на сервере. Я нахожу такой скрипт, который извлекает файл cab, но я еще не получил его. Так что теперь я пытаюсь извлечь с помощью cabarc.exe. Но я столкнулся с проблемой, что, когда я запускаю командную строку командной строки, ее работа прекрасна, но когда я даю такую ​​же команду функции system() или exec() в php, она не работает. код выглядит следующим образом:system() не работает в php с использованием Windows Server 2003

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

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

благодаря

ответ

1

2-й аргумент функции system передается по ссылке, поэтому он должен быть инициализирован вашим кодом. Кроме того, вы должны проверить значение false, используя !==, а не !=, потому что он проверяет тип в дополнение к значению. Кроме того, похоже, что у вас есть несбалансированная скобка в вашем заявлении 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 есть разрешения на доступ к файлу.

+0

Спасибо Асаф за ответ Я последовал твоему предложению. но моя проблема все еще остается. Я дал полный контроль над сайтом и папкой. но не работает. Есть ли проблема в php и iis? спасибо за помощь – jazzy

+0

@jazzy: Попробуйте запустить PHP-программу за пределами IIS. Попробуйте запустить программу PHP прямо на консоли. – Asaph

1

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

1

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

Смежные вопросы