簡體   English   中英

PHP執行casperjs / phantomjs腳本

[英]PHP to exec casperjs/phantomjs script

我在使用PHP執行casperjs腳本時遇到了麻煩:

<?php
putenv("PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs");
var_dump(exec("echo \$PATH"));
exec("/usr/local/bin/casperjs hello.js website.com 2>&1",$output);
var_dump($output);

結果如下:

string(43) "/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:."
array(1) {
  [0]=>
  string(36) "env: node: No such file or directory"
}

我能找到的僅有的stackoverflow帖子暗示我的路徑存在問題,並且也許PHP用戶無法訪問它所需要的東西。

我也嘗試了以下方法: sudo ln -s /usr/bin/nodejs /usr/bin/node

有誰知道我需要做什么或更改才能解決此錯誤?

謝謝

我的猜測是您在某處有某個東西,它假定已安裝節點。

首先,您是從命令行運行php嗎? 即在bash shell中作為php test.php 如果是這樣,您可以直接運行以下命令。 如果通過Web服務器,環境可能會有所不同。 我將從制作一個phpinfo(); 腳本 ,然后通過shell_exec()命令運行故障排除命令。 但是,由於這很痛苦,我首先要使其從命令行運行,並且只有在通過Web服務器運行時行為有所不同時,才可以解決此問題。 (順便說一句,如果您是從cron作業運行的,那么環境可能會略有不同。但是僅需擔心,如果它在命令行中有效,而在cron中則無效。)

對hello.js進行故障排除

簡單的。 確保您的腳本沒有在任何地方引用node 還請記住,您不能使用節點模塊。 因此,尋找不應該存在的require()命令。

對您的bash shell進行故障排除

運行printenv | grep -i node printenv | grep -i node以查看是否有任何內容。 但是,當PHP運行shell命令時,其他一些文件也將運行。 因此,請檢查/etc/profile~/.bash_profile 還要檢查/etc/profile.d/ /etc/bashrc~/.bashrc 您基本上是在尋找任何提及node東西。

對phantomjs / casperjs進行故障排除

您如何安裝phantomjs和casperjs? 是/ usr / local / bin下的實際二進制文件或符號鏈接,還是bash腳本到的位置。 例如在我的機器上:

cd /usr/local/bin
ls -l casperjs phantomjs

得到:

lrwxrwxrwx 1 darren darren 36 Apr 29  2014 casperjs -> /usr/local/src/casperjs/bin/casperjs
lrwxrwxrwx 1 darren darren 57 Apr 29  2014 phantomjs -> /usr/local/src/phantomjs-1.9.7-linux-x86_64/bin/phantomjs

然后檢查每個文件:

head /usr/local/src/casperjs/bin/casperjs
head /usr/local/src/phantomjs-1.9.7-linux-x86_64/bin/phantomjs

第一個告訴我casper實際上是一個python腳本#!/usr/bin/env python ,而第二個告訴我casper充滿了垃圾,告訴我這是一個二進制可執行文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM