私はLinux Webサーバーを使用しています。次のファイルは、スクリーンショットの作成に使用されています。
- 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....')
間違っていますか?