2010-07-10 57 views
6

我需要在PHP中運行inkscape,以便將svg圖像轉換爲PDF。但每次我嘗試:在PHP中運行inkscape

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

我沒有得到新文件,我得到這在Apache的錯誤日誌。

(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上運行。我能做些什麼來糾正這個問題?

+0

如果Inkscape選項證明太麻煩了,您可以嘗試[TCPDF](http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf),如[在共享的Linux服務器上將SVG轉換爲PDF](http://stackoverflow.com/questions/2143971/svg-to-pdf-on-a-shared-linux-server)。 – Mike 2010-07-10 17:51:35

回答

6

這與系統權限有關,更簡單的修復方法是在運行該代碼的用戶的根主文件夾中創建一個.gnome2文件夾,併爲其寫入權限(666應該沒問題)。

請注意,如果您是通過FTP文件夾/文件開始執行此操作。 (在Linux上隱藏的文件),可能不會顯示在列表上,具體取決於您的客戶端的配置。

例如:

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 
+0

試圖運行inkscape的用戶是www-data,我認爲運行apache的用戶。任何方式,我相信問題是這個用戶沒有一個主文件夾,事實上,發生問題的PC中唯一的主文件夾是我的主文件夾。 是否可以爲www數據創建一個主文件夾?這會解決問題嗎?如果是的話,我該如何創建該文件夾? – petermlm 2010-07-10 14:38:03

+0

假設你在apache上運行這個,找出用戶在哪個用戶下運行的httpd進程,然後在該用戶下創建.gnome2文件夾,這可能會解決這個問題。通常,apache運行在apache用戶和apache組下,你可能需要創建一個/home/apache/.gnome2,聽起來很不尋常,但可能工作。不要忘記chown。 – Rodrigo 2010-07-10 15:43:31

+0

我無法讓它工作。是不是可以編輯sudoers文件來使其工作。 – petermlm 2010-07-11 10:11:59

0

Inkscape中由web服務器用戶通常WWW的數據執行。 Ubuntu爲www數據提供的默認設置將www數據的主目錄定位在/ var/www中。

療法有兩種可能性:

a)改變WWW的數據的主目錄爲/ home/www數據

B)禁用虛擬主機在/ var/WWW

在這兩個您必須更改〜www-data的權限。首先將目錄「chown」到www-data:www-data並賦予它們寫入權限。

下一次,如果您通過PHP(如www-data用戶)執行inkscape,則會創建丟失的目錄。