wkhtmltoimage错误 - 无法执行二进制文件

时间:2011-11-23 22:35:43

标签: php linux binary

我在运行这个二进制文件时遇到了麻烦(我花了好几天时间!)。

我想在带有Apache Web服务器(icdsoft.com)的Linux操作系统上运行wkhtmltoimage,托管公司告诉我应该使用static-amd64。我在以下网址下载了该文件:

http://code.google.com/p/wkhtmltopdf/downloads/detail?name=wkhtmltoimage-0.11.0_rc1-static-amd64.tar.bz2并将其解压缩。

我没有ssh访问服务器,但托管公司说我可以从以下目录运行二进制文件:

/home/notice/www/www/wkhtmltoxdoc/

......虽然我认为它必须是这样的:

/usr/local/bin/

所以我将文件“wkhtmltoimage-amd64”上传到/ home / notice / www / www / wkhtmltoxdoc /并将其重命名为“wkhtmltoimage”。我也制作了这个文件的副本并称之为“wkhtmltoimage.bin”(有人说这有帮助)。我更改了两个文件和目录“wkhtmltoxdoc”以获得权限777.

然后我尝试使用php调用二进制文件(使用和不使用.bin扩展名),这不会产生任何结果(没有创建文件):

注意:[bbc_url] = http://www.bbc.com(我无法发布超过2个链接)

shell_exec('./wkhtmltoxdoc/wkhtmltoimage.bin [bbc_url] ./wkhtmltoxdoc/bbc.jpg');
shell_exec('./wkhtmltoxdoc/wkhtmltoimage [bbc_url] ./wkhtmltoxdoc/bbc2.jpg');

然后我尝试让二进制文件在我的本地系统OSx 10.6.8上运行 - 我复制了之前的amd-64文件和32位文件(http://code.google.com/p/wkhtmltopdf /downloads/detail?name=wkhtmltoimage-0.11.0_rc1-static-i386.tar.bz2)到/ usr / local / bin并将其权限更改为777.这些是转到/ usr / local / bin目录的结果并尝试在终端中运行它:

$ wkhtmltoimage-amd64 [bbc_url] /Users/jazz/Desktop/bbc.jpg
-bash: /usr/local/bin/wkhtmltoimage-amd64: cannot execute binary file

$ wkhtmltoimage-i386 [bbc_url] /Users/jazz/Desktop/bbc.jpg
-bash: /usr/local/bin/wkhtmltoimage-i386: cannot execute binary file

目标是在外部服务器上获取wkhtmltoimage,但我只是想在我的本地测试。

我在wkhtmltoimage的手册中找到了这个: “在Linux上,它依赖于glibc和openssl,而且你需要安装一个xserver但不需要运行。你需要安装不同的字体,包括xfonts-scalable(Type1)和msttcorefonts。”

我的服务器支持说: “服务器上有Glibc和OpenSSL。但XServer不是。我们尝试从shell运行命令。它运行时没有产生任何错误。但是,它无法创建映像。很可能没有XServer它不行。不幸的是,我们没办法安装XServer。它是Linux的图形系统,不适合托管服务器。“

如果有人能帮助我,我真的很感激!非常感谢!

1 个答案:

答案 0 :(得分:2)

我在我的Mac上本地成功运行了OSX wkhtmltoimage静态版本(最新预先打包我发现:wkhtmltoimage-OSX-0.10.0_rc2-static.tar.bz2)并且我为服务器上传了i386版本。

我首先在我的OSX终端本地测试了它

./wkhtmltoimage --width 1280 --height 700 http://www.google.com wktest.jpg

(更新)一些可能有用的提示:

  • 确保在程序上设置了执行位(chmod u + x或ugo + x)
  • 我在我的主目录下的linux服务器上安装了wkhtml 〜/ wkhtmldir(/ home / username / wkhtmldir)。
    程序似乎可以找到并使用(TTF)字体放在〜/ .fonts

编辑:
如果你在Linux服务器上有css字体使用问题(我有),
例如:未定义的符号:FcFreeTypeQueryFace ,然后fontconfig可能需要更新
请参阅此问题:http://code.google.com/p/wkhtmltopdf/issues/detail?id=352