2017-02-18 7 views
0

にPhantomjsを実行する方法。現在、wordpressはこのサーバにインストールされているので、ファンクションの呼び出しは主にphpの機能を使用して行われます。サーバーはLinux x86_64を実行しています。これは、ダウンロードしたPhantomと同じリポジトリです。私のWordPressのテンプレートファイルの1つでは、私はファントムを呼び出してスクリプトを実行しようとしますが、何もエコーされません。私はそれが提供された例の一つだったので、javascriptが正しいことを知っています。また、Phantomjsファイルには適切な実行権限があります。だから問題はない。これを正しく動作させるために使用しようとしているコードはすべてここにあります。私は私のウェブサーバ上にPhantomjsの実行可能ファイルをアップロードしようとしているLinuxのWebサーバ

<?php 
/* 
Template Name: Home Template 
Description: Page template to show home page content. 
*/ 

//phantom/phantomjs-directory/bin/phantomjs 
//phantom/phantomjs-directory/examples/version.js 

get_header(); 
?> 
<?php 
echo exec('phantom/phantomjs-directory/bin/phantomjs phantom/phantomjs-directory/examples/version.js'); 
?> 

と呼ばれているスクリプトは、バックexamples/代わりのbin/内の1つのディレクトリに配置され、以下見つけることができます:全く

"use strict"; 
console.log('using PhantomJS version ' + 
phantom.version.major + '.' + 
phantom.version.minor + '.' + 
phantom.version.patch); 
phantom.exit(); 

何もログインしていないか、エコーされています。これはなぜでしょうか?

答えて

0

私はこの1つでミスのカップルを作りました。私のためにこれをしたゴールデンコードはこれだけでした:

echo exec('/home/mainshee/public_html/wp-content/themes/twentyseventeen/phantom/phantomjs-directory/bin/phantomjs /home/mainshee/public_html/wp-content/themes/twentyseventeen/phantom/phantomjs-directory/examples/version.js'); 

私が作った主な間違いは、パスが完全ではなかったということでした。彼の所在地からの道のりだけが適切であると思うでしょうが、私は彼らが完全な道を望んでいると感じました。仕上げを始める。また、私が実行しようとしていたすべてのファイルに、0755権限があることを確認しました。私が最後にした予防策は、従来の方法ではなく、scpを使用してphantomjsファイルフォルダをアップロードすることでした。これは破損を避けるために行われました(ただし、最終的に何か変わったかどうかはわかりませんが)。これが他の人に役立つことを願っています!

1

は、エコーとバッククォートでそれを試してみてください。

echo `/phantom/phantomjs myscript.js`; 
+0

は何もあなたがシェルからそれを実行したときに何が起こるか、この方法 – Ethan

+0

を使用してエコーされていませんか?また、.jsファイルは 'pwd'は – pguardiario

+0

実行' binになっていることを確認します/例が/ hello.js'は完璧な結果を出力するphantomjs。しかし、何もPHPファイル内からのエコーから来ていません。 – Ethan

1

execへの正しい方法は

exec('/phantom/phantomjs myscript.js', $response); 
echo implode("<br>", $response); 

ですとにかくまずSSHを介してサーバにログインして、手動でスクリプトを実行しようとすることで動作するスクリプトを確認してください。 PhantomJSのバイナリは、サーバープロセッサアーキテクチャ(x64とx86)が一致しない可能性があります。

また、バイナリおよびスクリプトへのパスを気にし、最も簡単な方法は、絶対パスを使用することです。

+0

私は自分のサーバー上にあるPhantomjsのバージョンがサーバープロセッサーのアーキテクチャーと互換性があると確信しています。私は、WebサイトからPhantomjs x86_64をインストールする前に、アーキテクチャがx86_64であることを確認しました。私が使用しているスクリプトはその例の1つです。上記のコードを使用すると、エコーされる唯一の部分は「配列」です。主な懸念は、上記のスクリプトの中で、コンソールにメッセージが記録されていないことです。これは私がスクリプトが実際に動作していないと信じさせ、デフォルトの応答をエコーし​​ているだけです。あなたの考え? – Ethan

+0

私の悪いことに、$応答は実際に配列なので、表示方法については更新された答えを見てください。 – Vaviloff

+0

スクリプトは 'SSH'で完全に実行されますが、上の提案に合わせてコードを調整すると何も起こりません。 – Ethan

関連する問題