嘿伙计我有一个php exec命令可以在我的远程linux服务器上运行,但不能在我的Windows(WAMP包)本地服务器上运行。我真的想创建一个相同的工作站,以便我可以在本地测试,然后更新我的远程服务器。如果有人有任何建议或解决方案,除了转换为Linux,我真的很感激。
<?php
$safe_path = escapeshellarg('fake-virus.txt');
$command = '/usr/bin/clamscan --stdout ' . $safe_path;
$out = '';
$int = -1;
exec($command, $out, $int);
echo $int;
if ($int == 0) {
// all good;
} else {
echo 'o no';// VIRUS!;
}
?>
答案 0 :(得分:1)
我真的想创建一个相同的工作站,以便我可以在本地测试,然后更新我的远程服务器
安装cygwin
是错误的方法。只需使用virtualbox
,您可以从 here 获取,然后运行Ubuntu VM。更容易(也更好)。
答案 1 :(得分:0)
使用'su'它对我来说非常适合做酷的跨OS操作
shell_exec('su Administrator -c "cmd/script"');
使用Apache PHP运行cygwin并不困难。这是一个非常简单的教程cygwin-apache-php玩得开心!
答案 2 :(得分:-1)
至少在一个例子中,我能够通过cygwin使用wamp的php(在windows :-)上)的shell_exec()。我不得不在cygwin安装程序中安装procps或者其他东西,以便在cygwin中拥有最高级别的命令。然后我能够使用wamps php shell_exec在http://php.net/manual/en/function.shell-exec.php中使用Kishans建议执行cygwin top命令:
<?php
echo $result = shell_exec("C:\cygwin64\bin\bash.exe --login -c '/cygdrive/c/cygwin64/bin/top.exe --b -n 1'");
?>
/////////////////
Kisha的评论引用了:
如果你在Windows上并且有Cygwin,你可以使用shell_exec()执行所有Cygwin二进制文件,如下所示:
<?
$result = shell_exec("C:\cygwin\bin\bash.exe --login -c '/cygdrive/c/cygwin/bin/convert.exe --version'");
print($result);
?>
关键是“--login”选项,它将所有必需的常见cygwin二进制文件和库路径附加到$ PATH。没有这个选项,链接到其他库的一些cygwin二进制文件(如链接到X11的ImageMagick二进制文件)将无法工作,您可能会看到“找不到cygX11-6.dll,无法启动convert.exe”等错误