командный файл — PHP exec () и ключи командной строки

Поэтому я использую PHP exec () для запуска командного файла на моем сервере:

echo exec («printCountries.bat»);

Пакетный файл открывает Microsoft Access 2007 и запускает макрос для печати формы, а затем закрывает Access:

START / MIN / B msaccess.exe «C: \ inetpub \ wwwroot \ system \ reports.accdb» / X printCountries

Я могу запустить командный файл из командной строки, и форма распечатывается на нашем сетевом принтере (это для внутренней сети компании) и закрывает Access. Но когда я запускаю скрипт PHP, командный файл только запускает процесс доступа, но не выполняет переключений командной строки и не открывает файл базы данных.

Я настроил PHP, чтобы иметь необходимые права на IIS, я просто озадачен тем, почему переключатели командной строки не работают, и командный файл не открывает базу данных.

Есть идеи?

вот вывод эха:

C: \ inetpub \ wwwroot \ scale> START / MIN / B msaccess.exe «C: \ inetpub \ wwwroot \ system \ reports.accdb» / X printCountries

0

Решение

Я не хорош ни с PHP, ни с Access. Однако, когда вы вызываете пакетный файл из PHP, создайте экземпляр cmd.exe и передайте «/ c printCountries.bat» в cmd.exe. Другими словами, команда, запускаемая PHP exec, должна выглядеть примерно так (при условии, что PATH установлен правильно):

cmd.exe /c printCountries.bat

Кроме того, внутри printContries.bat, я думаю, вам нужно будет дождаться окончания процесса доступа. Так должно выглядеть

START /WAIT /MIN /B msaccess.exe "C:\inetpub\wwwroot\system\reports.accdb" /X printCountries
0

Другие решения

Похоже, у вас есть проблемы с правами доступа.

Вы пытались запустить в PHP это echo exec("whoami");
Какое имя пользователя вы получаете?
Что-то вроде "nt authority\iusr" ?

Вы должны предоставить пользователю IIS по умолчанию (т.е. IIS_IUSRS) полный доступ к пути, по которому живут ваши сценарии.

Кроме того, вы можете изменить (только временно, да?) Пользователя пула приложений по умолчанию из ApplicationPoolIdentity в LocalService или же LocalSystem проверить результаты …

Если бы я был вами, я бы создал новое приложение в IIS, а затем создал бы новый пул приложений и назначил бы его этому приложению. Затем я создал нового пользователя, который будет иметь доступ ко всем соответствующим каталогам (веб-каталог и где находится летучая мышь).

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

0

По вопросам рекламы [email protected]