我的目录结构如下
http://domainname.com/developer/clientName/ppt/phantom/ // inside this phantom folder, all files are present
Run Code Online (Sandbox Code Playgroud)
在与Bass Jobsen聊天并查看了服务器错误日志后,我发现它列在日志中
[Tue Apr 23 08:31:34 2013] [error] [client xxx.xxx.xx.xxx] sh: line 1: 29443
Segmentation fault /home/xyz/public_html/developer/clientName/ppt/phantom/phantomjs --version 2>&1
Run Code Online (Sandbox Code Playgroud)
================================================== ================================
我正在尝试在我的服务器上执行二进制文件.调用二进制文件phantomJS,主要用于创建网页的屏幕截图.
我登录了我的cPanel,发现了有关我的服务器的以下信息:
Operating system : Linux
Architecture : i686
Run Code Online (Sandbox Code Playgroud)
所以我继续phantomjs-1.9.0-linux-i686.tar.bz2从phantomJS网站下载.我上传了phantomjs位于bin下载文件夹内的文件(我刚上传了一个名为的文件,phantomjs大小约为38 MB.我假设我不需要下载附带的任何其他文件.是一个examples文件夹和一些ReadMes和其他.txt文件)
我还将另外三个文件上传到了相同的文件夹中phantomjs:
test.php (这是将在浏览器中执行的主文件)test.js (其中包含启动phantomjs的代码)createScreenshot.php (包含输出一些HTML的代码)所以所有文件都在同一个文件夹中.因此,不应该由于错误的路径而产生问题.
exec('phantomjs test.js');
Run Code Online (Sandbox Code Playgroud)
var page = require('webpage').create();
var url = 'createScreenshot.php';
page.open(url, function (status) {
page.render('test.png');
phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)
echo '<h1>This should be converted to an image</h1>';
Run Code Online (Sandbox Code Playgroud)
现在,当我浏览时www.mydomain.com/test/test.php,我得到的只是一个空白页面,这很好,因为唯一应该发生的是在test文件夹中创建一个图像,但这种情况从未发生过.没有错误输出.我也尝试过放入error_reporting(E_ALL)内部test.php,但仍然没有显示错误,只是一个空白页面.
我决定测试exec我的服务器上是否完全启用了.我这样做是通过使用
echo exec('whoami');
Run Code Online (Sandbox Code Playgroud)
这打印出我的cPanel用户名.所以这意味着exec工作.
我接下来要做的是检查文件夹权限.test文件夹有755权限,所以phantomjs.我尝试改变两者,777但也没有帮助.
这让我相信phantomjs文件有问题.我不知道下一步该尝试什么.我确定认为我从phantomJS网站(phantomjs-1.9.0-linux-i686.tar.bz2)下载了正确的软件包.
我还能做些什么来调试这个问题吗?
运行
echo exec("ls -lh");
Run Code Online (Sandbox Code Playgroud)
打印出来
-rw-r--r-- 1 abc abc 1.8K Apr 6 05:15 third-party.txt
Run Code Online (Sandbox Code Playgroud)
这third-party.txt是在包含phantomjs二进制文件的文件夹中,但我想知道为什么只打印了一个文件名.在同一个文件夹中也有php和js文件third-party.txt.1虽然不太确定在上面的输出中代表.