关于linux:在PHP中运行inkscape

Run inkscape in PHP

我需要在PHP中运行Inkscape,以便将SVG图像转换为PDF。但是每次我尝试:

//some PHP code
system("inkscape -z --file=svg.svg --export-pdf=pdf.pdf");
//more code

我没有得到新的文件,我在ApacheErro日志中得到了这个文件。

(inkscape:28607): libgnomevfs-WARNING **: Unable to create ~/.gnome2 directory: Permission > denied

Emergency save activated!
Emergency save completed. Inkscape will close now.
If you can reproduce this crash, please file a bug at www.inkscape.org
with a detailed description of the steps leading to the crash, so we can fix it.
** Message: Error: Inkscape encountered an internal error and will close now.

Segmentation fault

我使用Apache服务器在Ubuntu上运行。我能做些什么来纠正这个问题?


这与系统权限有关,更容易修复的方法是在运行该代码的用户的根主文件夹中创建一个.gnome2文件夹,并授予其写入权限(666应该可以)。

请注意,如果要通过ftp文件夹/文件执行此操作,请从开始。(Linux上的隐藏文件),根据客户机的配置,可能不会显示在列表上。

例如:

1
2
3
mkdir -p /var/www/.gnome2 /var/www/.config /var/www/.config/inkscape
chmod 755 /var/www/.gnome2 /var/www/.config /var/www/.config/inkscape
chown -R www-data /var/www/.gnome2 /var/www/.config /var/www/.config/inkscape


Inkscape通常由webserver用户WWW数据执行。Ubuntu为WWW数据提供的默认设置位于/var/www中的WWW数据主目录。

有两种可能性:

a)将WWW数据的主目录更改为/home/WWW数据

b)禁用/var/www中的虚拟主机

在这两种情况下,您都必须更改~www data的权限。先把目录"chown"到www-data:www-data并给他们写权限。

下一次,如果您通过php(作为www数据用户)执行inkscape,将创建丢失的目录。