帮助PDFKit和Rails应用程序 [英] Help with PDFKit and Rails App
问题描述
使用Ubuntu 10.04 Lucid网络服务器(linode)。
按照这些说明安装wkhtmltopdf 链接(只有一个为我工作。)
我可以运行 wkhtmltopdf http://www.google.com google.pdf
,它的工作原理。
我的rails应用程序的任何东西都会产生一个500错误。
apache error.log
/ bin / wkhtmltopdf:符号查找错误:/ bin / wkhtmltopdf:undefined symbol:_ZN9QListData11detach_growEPii
rails log
Rendered customers / agreement_form.html.erb(15.0ms)
在19ms完成200 OK(视图:16.6ms | ActiveRecord:0.6ms)
RuntimeError(命令失败: / bin / wkhtmltopdf --encoding UTF-8 --page-size A4 --margin-top 0.5in --margin-right 0.75in --margin-bottom 0.5in --margin-left 0.75in --print-media-类型--quiet - - ):
app / middleware / flash_session_cookie_middleware.rb:19:在`call'
编辑
ldd / bin / wkhtmltopdf
linux-gate。 so.1 => (0xf57fe000)
libwkhtmltox.so.0 => /lib/libwkhtmltox.so.0(0xb7718000)
libQtWebKit.so.4 => /root/sources/wkqt/lib/libQtWebKit.so.4(0xb64cd000)
libQtSvg.so.4 => /root/sources/wkqt/lib/libQtSvg.so.4(0xb6473000)
libQtXmlPatterns.so.4 => /root/sources/wkqt/lib/libQtXmlPatterns.so.4(0xb6047000)
libQtGui.so.4 => /root/sources/wkqt/lib/libQtGui.so.4(0xb5551000)
libQtNetwork.so.4 => /root/sources/wkqt/lib/libQtNetwork.so.4(0xb5423000)
libQtCore.so.4 => /root/sources/wkqt/lib/libQtCore.so.4(0xb517c000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0(0xb5163000)
libstdc ++。so.6 => /usr/lib/libstdc++.so.6(0xb506c000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6(0xb5046000)
libgcc_s.so.1 => /lib/libgcc_s.so.1(0xb5027000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6(0xb4ecd000)
libXrender.so.1 => /usr/lib/libXrender.so.1(0xb4ec3000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1(0xb4e92000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6(0xb4e1c000)
libXext.so.6 => /usr/lib/libXext.so.6(0xb4e0c000)
libX11.so.6 => /usr/lib/libX11.so.6(0xb4cef000)
libz.so.1 => /lib/libz.so.1(0xb4cda000)
libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0(0xb4cd3000)
librt.so.1 => /lib/tls/i686/cmov/librt.so.1(0xb4cca000)
libglib-2.0.so.0 => /lib/libglib-2.0.so.0(0xb4c00000)
libpng12.so.0 => /lib/libpng12.so.0(0xb4bdb000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0(0xb4b9c000)
libSM.so.6 => /usr/lib/libSM.so.6(0xb4b92000)
libice.so.6 => /usr/lib/libICE.so.6(0xb4b79000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2(0xb4b75000)
/lib/ld-linux.so.2(0xb7781000)
libexpat.so.1 => /lib/libexpat.so.1(0xb4b4e000)
libxcb.so.1 => /usr/lib/libxcb.so.1(0xb4b34000)
libpcre.so.3 => /lib/libpcre.so.3(0xb4b02000)
libuuid.so.1 => /lib/libuuid.so.1(0xb4afd000)
libXau.so.6 => /usr/lib/libXau.so.6(0xb4af9000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6(0xb4af3000)
通常,您的RoR应用程序将作为不同的用户运行,而不是 root
:可能 www-data
该用户可以阅读 /root/sources/wkqt/lib/libQtSvg.so.4
您可能需要更改以下权限:
/ root
/ root / sources
/ root / sources / wkqt
/ root / sources / wkqt / lib
允许所有人读取和执行权限。您可以使用 ls -l </ code>检查权限;设置权限
chmod(1)
:
chmod 755 / root / root / sources / root / sources / wkqt / root / sources / wkqt / lib
chmod 644 / root / sources / wkqt / lib / * so *
为了在运行时链接,链接器 ld.so(8)
需要能够读取库和所有目录以获取库。
Working on Ubuntu 10.04 Lucid webserver (linode).
Followed these instructions to install wkhtmltopdf link (only one that worked for me.)
I can run wkhtmltopdf http://www.google.com google.pdf
and it works.
Anything from my rails app generates a 500 error. apache error.log
/bin/wkhtmltopdf: symbol lookup error: /bin/wkhtmltopdf: undefined symbol: _ZN9QListData11detach_growEPii
rails log
Rendered customers/agreement_form.html.erb (15.0ms)
Completed 200 OK in 19ms (Views: 16.6ms | ActiveRecord: 0.6ms)
RuntimeError (command failed: /bin/wkhtmltopdf --encoding UTF-8 --page-size A4 --margin-top 0.5in --margin-right 0.75in --margin-bottom 0.5in --margin-left 0.75in --print-media-type --quiet - -):
app/middleware/flash_session_cookie_middleware.rb:19:in `call'
EDIT
ldd /bin/wkhtmltopdf
linux-gate.so.1 => (0xf57fe000)
libwkhtmltox.so.0 => /lib/libwkhtmltox.so.0 (0xb7718000)
libQtWebKit.so.4 => /root/sources/wkqt/lib/libQtWebKit.so.4 (0xb64cd000)
libQtSvg.so.4 => /root/sources/wkqt/lib/libQtSvg.so.4 (0xb6473000)
libQtXmlPatterns.so.4 => /root/sources/wkqt/lib/libQtXmlPatterns.so.4 (0xb6047000)
libQtGui.so.4 => /root/sources/wkqt/lib/libQtGui.so.4 (0xb5551000)
libQtNetwork.so.4 => /root/sources/wkqt/lib/libQtNetwork.so.4 (0xb5423000)
libQtCore.so.4 => /root/sources/wkqt/lib/libQtCore.so.4 (0xb517c000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb5163000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb506c000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb5046000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb5027000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb4ecd000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb4ec3000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb4e92000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb4e1c000)
libXext.so.6 => /usr/lib/libXext.so.6 (0xb4e0c000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb4cef000)
libz.so.1 => /lib/libz.so.1 (0xb4cda000)
libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb4cd3000)
librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb4cca000)
libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0xb4c00000)
libpng12.so.0 => /lib/libpng12.so.0 (0xb4bdb000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb4b9c000)
libSM.so.6 => /usr/lib/libSM.so.6 (0xb4b92000)
libICE.so.6 => /usr/lib/libICE.so.6 (0xb4b79000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb4b75000)
/lib/ld-linux.so.2 (0xb7781000)
libexpat.so.1 => /lib/libexpat.so.1 (0xb4b4e000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb4b34000)
libpcre.so.3 => /lib/libpcre.so.3 (0xb4b02000)
libuuid.so.1 => /lib/libuuid.so.1 (0xb4afd000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb4af9000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb4af3000)
Typically, your RoR application is going to run as a different user than root
: perhaps www-data
, perhaps another system account.
Can that user read /root/sources/wkqt/lib/libQtSvg.so.4
and all the other libraries in that directory?
You might need to change the permissions on:
/root
/root/sources
/root/sources/wkqt
/root/sources/wkqt/lib
to allow everyone read and execute privileges. You can check permissions with ls -l
; set permissions with chmod(1)
:
chmod 755 /root /root/sources /root/sources/wkqt /root/sources/wkqt/lib
chmod 644 /root/sources/wkqt/lib/*so*
In order to link at run time, the linker ld.so(8)
needs to be able to read the libraries and all directories to get to the libraries.
这篇关于帮助PDFKit和Rails应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!