我在 Linux 网络服务器上。以下文件用于创建屏幕截图:
- ons.php
- ong.js
- ons2.php
所有这些文件以及phantomJS
二进制文件都在同一个文件夹中。该文件夹的权限是744
ons.php
$forMonth = date('M Y');
exec('./phantomjs ons.js '.strtotime($forMonth), $op, $er);
print_r($op);
echo $er;
ons.js
var args = require('system').args;
var dt = '';
args.forEach(function(arg, i) {
if(i == 1)
{
dt = arg;
}
});
var page = require('webpage').create();
page.open('./ons2.php?dt='+dt, function () { //<--- This is failing
page.render('./xx.png');
phantom.exit();
});
ons2.php
<!DOCTYPE html>
<html>
<head>
<title>How are you</title>
</head>
<body>
<?php
if(isset($_GET['dt']))
{
echo $_GET['dt'];
}
else
{
echo '<h1>Did not work</h1>';
}
?>
</body>
</html>
在浏览器中打开ons.php
时,我得到了这个结果:
Array ( ) 0
但是没有创建屏幕截图。
调试
经过大量调试,我发现它与路径有关。
--> 如果我把以下内容放在里面ons.js
.
.
.
var page = require('webpage').create();
page.open('http://www.abc.com/ppt/ons2.php', function () { // <-- absolute path
page.render('./xx.png');
phantom.exit();
});
正在创建屏幕截图。我想避免使用绝对路径,因为应用程序很快就会转移到不同的域。
我不明白为什么即使所有文件都在同一个文件夹中,相对路径也不起作用。我的语法page.open('./ons2.php....')
错了吗?