[英]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.