php - 在 PHP 中使用 exec 命令时可能出现的权限问题

标签 php windows exec

我们有一个用 PHP 构建的小型办公室内联网(在 apache 服务器上 - 所以 WAMP),它允许我们在我们的文件服务器上创建项目文件夹。这通过使用 shell exec xcopy 命令和以下开关将一组模板文件夹复制到新位置来实现 /e/k/i/c

我们最近(相当)升级到运行 Windows Server 2008 R2 Standard 的新文件服务器。现在 xcopy 命令不再在 PHP 中运行。但是,我知道 xcopy 命令是正确的,因为如果我将它复制并粘贴到命令提示符(在同一台机器上),它就可以工作。

我看不到任何错误消息,但我认为这是与 PHP“用户”相关的某种权限问题,但我不知道究竟是什么或如何解决它。

apache 服务器和文件服务器是两台独立的机器。如果相关,apache 服务器是 32 位机器,文件服务器是 64 位机器,但正如我所说,我可以毫无问题地从 32 位机器的 CLI 调用 xcopy 命令。

Apache 进程的用户名是 SYSTEM(虽然我似乎不能使用 'whoami' 命令来检查这个)

如有任何指点,我们将不胜感激。

FWIW,exec 字符串看起来像这样......

echo "xcopy \"\\\\path\\to\\folder\\xxxx_Project\\*.*\" \"\\\\path\\to\\folder\\9876_NEWPROJECT\" /e /k /i /c";

这(我认为)具体化为...

xcopy "\\path\to\folder\xxxx_Project\*.*" "\\path\to\folder\9876_NEWPROJECT" /e /k /i /c

显然,'9876_NEWPROJECT 位实际上是一个变量。

最佳答案

好的。我似乎已经开始工作了。这是我所做的 - 告诉我这是否是个坏主意,尽管我应该指出这是一个内部网,所以我不太关心安全性......

  1. 转到控制面板->管理工具_>服务

  2. 选择 Apache 服务并点击属性

  3. 在“登录”选项卡上,单击“此帐户:”而不是“本地系统帐户”,然后找到正常登录到该终端的 Windows 用户的用户帐户

  4. 重新启动 Apache

我还修改了 httpd.conf 文件中的用户信息,但实际上我不确定是否有必要。

如果有更好的解决方案,可以用两个音节或更少的单词来解释,我洗耳恭听!

关于php - 在 PHP 中使用 exec 命令时可能出现的权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20995932/

相关文章:

javascript - 如果需要,ajaxForm 重新提交

php - 通过 php exec 函数传递 $_SERVER 数组

c - 使用 execl 运行 Linux 命令

linux - 无法使用 stdout exec 结束 Bash 脚本

php - 如何在 .tpl 中包含自定义 JS (JQuery) 文件?

javascript - 根据用户所在的页面更改 div 中的文本

php - 将复杂的 XML 解析为 PHP 和数据库

c++ - 从旧字符串创建新字符串

windows - 如何使用 Windows 命令行查找所有 exe 文件?

windows - 如何从批处理文件中打开最大化的java应用程序?