3

私は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....')間違っていますか?

4

2 に答える 2