【发布时间】:2016-08-28 16:30:58
【问题描述】:
我已经安装了 MAMP,并且正在运行一个 php 脚本来执行外部程序(jar 和 exe)。一切都在我的本地机器上完美运行。 但是,当我将其全部放在 AWS 实例上时,它只是忽略了 pclose(popen(...)) 行。我得到了两个日志消息并且没有错误。
$command = 'start /B cmd /C '.$this->getCommand().' >NUL 2>NUL';
$this->Log.debug('executing command : '.$command);
pclose(popen($command, 'r'));
$this->Log.debug('command sent');
我认为这可能是某种权限问题?但我检查了 php.ini 和 Apache 权限,一切看起来都不错。没有告诉 PHP 忽略 popen 命令。
更新: 我在同一位置创建了一个 test.bat 文件
echo Hello, World > donald.txt
这在从 php 调用时执行,所以现在我知道 pclose(popen()) 正在工作。我正在尝试执行的命令是 java - jar ...所以它必须与运行 java 的权限有关?
所以这行得通:
start /B cmd /C D:/programs/test.bat >NUL 2>NUL
但事实并非如此:
start /B cmd /C java -Xmx2048m -jar "D:\programs\program.jar" -pm XXX_YYY -t FULL -flag1 -flag2 -k 23 >NUL 2>NUL
【问题讨论】:
-
你是用
mamp做windows还是mac? -
适用于 Windows。一切正常,除了一行
-
getCommand()的结果是什么? -
您的 AWS 实例运行什么操作系统?
-
Windows Server 2012
标签: php amazon-web-services mamp