【问题标题】:Executing BCP from an Azure PHP web app从 Azure PHP Web 应用程序执行 BCP
【发布时间】:2016-11-27 01:00:33
【问题描述】:

更新:经过大量搜索,Azure 似乎可能会限制我执行某些 shell 命令的能力。我目前正在使用 Standard 1 Web App 计划 - 我必须做什么才能通过 PHP 使用 BCP 实用程序?

所以我在我的 Azure Web 应用程序上运行了一个 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 执行 shell 命令时有什么遗漏吗?我对此很陌生,所以我感谢所有的帮助!

谢谢!

【问题讨论】:

  • 你有什么更新吗?

标签: php shell azure bcp shell-exec


【解决方案1】:

根据您的描述,您似乎将bcp.exebcp.dll 复制到了Azure Web Apps 目录,并试图使用shell env 执行bcp 命令。由于 Azure Console 的默认目录路径是 Azure Web Apps 的根目录,所以我想你的应用程序的结构是这样的:

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

根据你的代码sn-p,你在scripts文件夹中的php脚本找不到bcp命令,所以你得到了空白页。

您可以尝试将 bcp.exebcp.dll 文件移动到脚本文件夹中,或者修改 shell 命令,例如../bcp db.dbo.table in ...

如果我对您的问题有任何误解,请随时告诉我。

【讨论】:

  • 感谢您的回答 - 由于 Azure Web 应用服务器在 Windows Server 上运行,因此默认安装 BCP。问题是服务器不允许我使用 bcp 或其他命令(例如 ls)运行 shell_exec。我最终创建了一个单独的虚拟机,我可以在其中运行 BCP。
猜你喜欢
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多