是否可以通过cygwin运行php exec?

时间:2010-06-15 01:20:58

标签: php linux cygwin wamp

嘿伙计我有一个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!;

}





?>

3 个答案:

答案 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”等错误