shell — выполнение BCP из веб-приложения Azure PHP

Обновление: после нескольких поисков выясняется, что Azure может ограничить мою способность выполнять определенные команды оболочки. В настоящее время у меня есть план Standard 1 Web App — что мне нужно сделать, чтобы иметь возможность использовать утилиту BCP через PHP?

Поэтому в моем веб-приложении Azure запущен PHP-скрипт, и я пытаюсь использовать BCP для загрузки данных. Мне удалось успешно выполнить команду через консоль Azure, но у меня возникли проблемы при запуске через PHP.

PHP-код:

$upload_dir = '../uploads';
$test = shell_exec("bcp [database].[dbo].[Group] IN $upload_dir/working/Group.csv -S <server>; -T -f $upload_dir/format/Group.fmt -F2");
die($test);

Когда я запускаю это, я не получаю ответ от сценария, и запрос к БД указывает, что загрузка была неудачной. Когда я пытаюсь сделать более простой тест, используя

$test = shell_exec("echo 'Hello World'");
die($test);

Я получаю ожидаемый вывод «Hello World».

Что касается структуры файлов, сценарий PHP находится в папке wwwroot / scripts, а файлы CSV и FMT — в файлах wwwroot / uploads / working / Group.csv и wwwroot / uploads / format / Group.fmt соответственно.

Что-то мне не хватает при попытке выполнить команды оболочки через PHP? Я довольно новичок в этом, поэтому я ценю всю помощь!

Спасибо!

0

Решение

По вашему описанию, похоже, что вы скопировали bcp.exe а также bcp.dll в каталог Azure Web Apps и попытался использовать оболочку env для выполнения bcp команды. Поскольку путь к каталогу Azure Console по умолчанию является корневым каталогом веб-приложений Azure, я предполагаю, что структура вашего приложения будет выглядеть следующим образом:

wwwroot/
bcp.exe
bcp.dll
scripts/
uploads/
...

Согласно вашему фрагменту кода, ваш PHP-скрипт в scripts Папка не может найти команду bcp, поэтому вы получили пустую страницу.

Вы можете попробовать переместить bcp.exe а также bcp.dll файлы в папку сценариев или измените команду оболочки, например, ../bcp db.dbo.table in ...

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

0

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

Других решений пока нет …