0

我使用测试框架 DalekJS 来测试用户界面。要执行我的测试脚本 mytest.js,我在 shell 中输入:

cd /Applications/XAMPP/xamppfiles/htdocs/tests
dalek mytest.js

它工作正常。现在我想用 PHP 执行相同的脚本。我的代码:

<?php
chdir('/Applications/XAMPP/xamppfiles/htdocs/tests');
$command = 'dalek mytest.js';
exec($command, $return, $return_var);
var_dump($return);
var_dump($return_var);

在浏览器中运行我的 PHP 脚本,它会打印:

array(0) { } int(127) 

DalekJS 脚本在 shell 中执行时会生成屏幕截图,但使用 PHP 运行时不会发生任何事情。我也尝试过 shell_exec()、system() 和 passthru(),但没有成功。您知道为什么 PHP 脚本不起作用吗?

4

1 回答 1

1

从 PHP 调用 dalek 对我来说很好。您的 PHP 进程是否可能在与PATH您的用户不同的环境中运行(其中包括 )?也许是apache用户或类似的?

<?php

// change current working directory of the current PHP process,
// this will subsequently change the initial CWD of exec()
$whereMyTestsAre = __DIR__;
chdir($whereMyTestsAre); 

// locate dalek
$dalek = exec('which dalek');

// abort if there is no dalek,
// you may want to check PATH or supply the full path yourself
if (!$dalek) {
  echo "could not find dalek executable, please check your path";
  $PATH = exec('echo $PATH');
  echo '$PATH is ', $PATH, "\n";
  exit(1);
}

// relative to $whereMyTestsAre
// exec() blocks until the child process (dalek) exits
exec('dalek mytest.js');
于 2014-08-19T14:52:48.753 回答