我有一台安装了 PHP 和 msys 的 Windows 2008 服务器。我还有一个简单的 php 脚本,它调用 shell_exec 并 tar 一些文件。当我在开发机器 (Windows 7) 上运行该脚本时,它运行良好。但是,当我在 Windows 2k8 服务器上运行它时,它会超时。当我复制并粘贴在 cmd 行上运行的内容并运行它时,它会在不到一秒的时间内无错误地执行。
还有一个重要细节:当我 shell_exec 'dir' 或 'netstat' 时,脚本运行没有任何问题。当我 shell_exec 'ls' 时,它会挂起。当我在命令行上运行 ls 时,它会立即返回。
其他可能有用的详细信息:Windows 2k8 服务器是 Rackspace 托管的 VPS。我安装了 Apache、PHP 和 msys,但没有安装任何其他东西。
当我运行 whoami 时,我看到 php 脚本以用户“nt authority\system”的身份执行。
答案1
它最有可能是权限或环境变量。如果您在脚本中使用任何环境变量,请仔细检查它们是否在通过 cron 运行时也进行了设置,因为环境变量通常与您的正常登录 shell 不同。
如果不是环境,则开始仔细检查权限。