Javascript 如何在Linux Web服务器上运行Phantomjs
我正在尝试将Phantomjs的可执行文件上载到我的web服务器上。目前,wordpress安装在该服务器上,因此主要通过使用Javascript 如何在Linux Web服务器上运行Phantomjs,javascript,php,linux,wordpress,phantomjs,Javascript,Php,Linux,Wordpress,Phantomjs,我正在尝试将Phantomjs的可执行文件上载到我的web服务器上。目前,wordpress安装在该服务器上,因此主要通过使用php函数来调用phantom。服务器运行的是Linux x86_64,这与我下载的Phantom存储库相同。在我的一个wordpress模板文件中,我尝试调用phantom并尝试运行脚本,但没有任何响应。我知道javascript是正确的,因为它是提供的示例之一。此外,Phantomjs文件具有足够的运行权限。所以没有问题。下面是我试图使用的所有代码,以使其正常工作 &
php
函数来调用phantom。服务器运行的是Linux x86_64,这与我下载的Phantom存储库相同。在我的一个wordpress模板文件中,我尝试调用phantom并尝试运行脚本,但没有任何响应。我知道javascript是正确的,因为它是提供的示例之一。此外,Phantomjs文件具有足够的运行权限。所以没有问题。下面是我试图使用的所有代码,以使其正常工作
<?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');
?>
没有任何内容被记录或回显。为什么会这样 用echo和backticks试试
echo `/phantom/phantomjs myscript.js`;
用echo和backticks试试
echo `/phantom/phantomjs myscript.js`;
正确的方法是
exec('/phantom/phantomjs myscript.js',$response);
回波内爆(“
”,$response);
无论如何,您应该首先通过SSH登录到服务器并尝试手动运行脚本来检查脚本是否工作。PhantomJS二进制文件可能与服务器处理器体系结构不匹配(x64与x86)
还要注意二进制文件和脚本的路径,最简单的方法是使用绝对路径。正确的方法是
exec('/phantom/phantomjs myscript.js',$response);
回波内爆(“
”,$response);
无论如何,您应该首先通过SSH登录到服务器并尝试手动运行脚本来检查脚本是否工作。PhantomJS二进制文件可能与服务器处理器体系结构不匹配(x64与x86)
还要注意二进制文件和脚本的路径,最简单的方法是使用绝对路径。我在这条路径上犯了几个错误。为我做到这一点的黄金法则是:
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文件夹,而不是传统方法。这样做是为了避免任何腐败(尽管我不确定它最终是否会产生任何影响)。希望这对其他人有帮助 这次我犯了几个错误。为我做到这一点的黄金法则是:
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文件夹,而不是传统方法。这样做是为了避免任何腐败(尽管我不确定它最终是否会产生任何影响)。希望这对其他人有帮助 我确信服务器上的Phantomjs版本与服务器处理器体系结构兼容。在从网站安装Phantomjs x86_64之前,我验证了该体系结构是x86_64。我使用的脚本就是他们的例子之一。当我在上面使用你的代码时,唯一得到回应的是“数组”。我主要关心的是,在上面显示的脚本中,没有消息被记录到控制台。这让我相信脚本并没有真正运行,它只是在响应默认响应。你的想法?我的错,$response确实是数组,因此请参阅更新的答案,了解如何查看它。脚本在SSH
中完美运行,但当我根据上面的建议调整代码时,什么也没有发生。那么$response
数组是空的吗?Tryexec('/phantom/phantomjs myscript.js',$response,$return_var)
什么是$return\u var
?我确信我服务器上的Phantomjs版本与服务器处理器架构兼容。在从网站安装Phantomjs x86_64之前,我验证了该体系结构是x86_64。我使用的脚本就是他们的例子之一。当我在上面使用你的代码时,唯一得到回应的是“数组”。我主要关心的是,在上面显示的脚本中,没有消息被记录到控制台。这让我相信脚本并没有真正运行,它只是在响应默认响应。你的想法?我的错,$response确实是数组,因此请参阅更新的答案,了解如何查看它。脚本在SSH
中完美运行,但当我根据上面的建议调整代码时,什么也没有发生。那么$response
数组是空的吗?Tryexec('/phantom/phantomjs myscript.js',$response,$return_var)代码>什么是$return\u var
?使用此方法不会回显任何内容从shell运行时会发生什么?另外,确保.js在pwd
中运行bin/phantomjs examples/hello.js
输出完美的结果。但是,从php文件中进行回显根本不会产生任何结果。使用这种方法不会进行任何回显。从shell运行时会发生什么?另外,确保.js在pwd
中运行bin/phantomjs examples/hello.js
输出完美的结果。但是,从php文件中回音根本不会产生任何结果。