Поэтому я использую 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
Я не хорош ни с 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
Похоже, у вас есть проблемы с правами доступа.
Вы пытались запустить в PHP это echo exec("whoami");
Какое имя пользователя вы получаете?
Что-то вроде "nt authority\iusr"
?
Вы должны предоставить пользователю IIS по умолчанию (т.е. IIS_IUSRS) полный доступ к пути, по которому живут ваши сценарии.
Кроме того, вы можете изменить (только временно, да?) Пользователя пула приложений по умолчанию из ApplicationPoolIdentity
в LocalService
или же LocalSystem
проверить результаты …
Если бы я был вами, я бы создал новое приложение в IIS, а затем создал бы новый пул приложений и назначил бы его этому приложению. Затем я создал нового пользователя, который будет иметь доступ ко всем соответствующим каталогам (веб-каталог и где находится летучая мышь).
Если ничего из вышеперечисленного не сработало, я бы протестировал свое php-приложение из командной строки (локально), используя php
Команда в моей локальной командной строке.