乐趣区

wkhtmltopdf cpanel

背景
前文提到了 安装 wkhtmltopdf 和 兼容 chatjs 但到部署的时候却,,,。客户的环境是 [cpanel 虚拟主机]。这就意味着你会的不会的 shell 命令全都不能用,yum rmp 不能执行 不能命令安装任何软件。且最主要的是没有 root 和 sudo 权限,只能执行一些简单的 ls cd ps 命令。
思路
基于以上原因,直接要求客户将虚拟主机更换为服务器,但是在期间还是 google 了好久在 cpanel 中安装 wkhtmltopdf。无果后仔细想想可能只有把安装好的二进制文件拷贝上去,然后再补上依赖这种还有微小的可能。于是在本地的两个 centos7 虚拟机之间尝试在一台安装拷贝到另一台上面执行发现是可以的,于是赶紧复制到 cpanel 上面去。
尝试
先是看了 cpanel 用的 linux 发行版,应该是 centos,但是无法查到是 centos6 还是 centos7 我在本地使用 centos7 安装好 wkhtmltopdf 后拷贝上去后执行提示缺少动态链接库,一看有希望赶紧又把动态链接库拷贝了上去,但是因为没有 sudo 权限,无法拷贝到 /usr/lib64 下。想了想应该有指定 lib 目录的设置,查一下,果然可以通过 export LD_LIBRARY_PATH 来增加 lib 库的目录但是由于要用 php 来执行,这里的思路是每次 php 先用 shell 执行设置 export LD_LIBRARY_PATH 后在执行 wkhtmltopdf 命令。这里需要注意的是拷贝不兼容的链接库文件且指定了 export LD_LIBRARY_PATH 可能会导致系统瘫痪且重启后无法恢复我退出重新登录后 export 指定的目录失效,但是反复尝试了几次还是没有解决版本的兼容问题于是下拉了 centos6 的 docker 镜像,重新安装了 wkhtmltopdf,重新上传了 bin 目录下的文件尝试执行 wkhtmltopdf - V 看缺少什么依赖,结果直接成功了,测试导出一个 pdf,也成功了,what???
之后把这个文件放到 home 的 usr/bin 下了

如果上面的没有成功的话,还是推荐尝试下把所有的依赖拷贝进去,然后 php 先执行 export

退出移动版