2010-07-10 2 views
6

Ho bisogno di eseguire inkscape in PHP così posso convertire un'immagine in formato PDF in formato svg. Tuttavia ogni volta che provo:Esegui inkscape in PHP

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

ottengo nessun nuovo file e ottengo questo nel log di Apache erro.

(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

Sono in esecuzione su ubuntu con server Apache. Cosa posso fare per correggere questo problema?

+0

Se l'opzione Inkscape risulta eccessivamente problematica, è possibile provare [TCPDF] (http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf) come suggerito nella risposta a [ Da SVG a PDF su un server Linux condiviso] (http://stackoverflow.com/questions/2143971/svg-to-pdf-on-a-shared-linux-server) qui su SO. – Mike

risposta

6

Questo è correlato alle autorizzazioni di sistema, il modo più semplice per risolvere è creare una cartella .gnome2 nella cartella principale dell'utente dell'utente che sta eseguendo quel codice e assegnargli le autorizzazioni per scrivere (666 dovrebbe andare bene).

Si noti che se si esegue questa operazione da cartelle FTP/file che iniziano con. (file nascosti su linux), potrebbe non apparire su elenchi in base alla configurazione del tuo cliente.

Ad esempio:

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

L'utente che tenta di eseguire inkscape è www-data, penso che l'utente che esegue apache. In ogni caso, credo che il problema sia che questo utente non ha una cartella home, infatti l'unica cartella home nel PC dove si sta verificando il problema è la mia cartella home. È possibile creare una cartella Inizio per www-data? questo risolverebbe il problema? Se sì, come posso creare quella cartella? – petermlm

+0

Supponendo che tu stia eseguendo questo su apache, scopri sotto quale utente il processo httpd è in esecuzione, quindi crea la cartella .gnome2 sotto quell'utente, che probabilmente risolverà il problema. Solitamente Apache gira sotto l'utente apache e il gruppo apache, potrebbe essere necessario creare un /home/apache/.gnome2, suona inusuale, ma potrebbe funzionare. Non dimenticare di chown. – Rodrigo

+0

Non riesco a farlo funzionare. Non è possibile modificare il file sudoers per farlo funzionare. – petermlm

0

Inkscape viene eseguito dal server web-utente normalmente www-dati. L'impostazione predefinita che Ubuntu fornisce per www-data individua la directory home di www-data in/var/www.

Ther sono due possibilità:

a) Modifica della home directory di www-data a/home/www-data

b) Disattivare il VirtualHost in/var/www

In entrambi Casi in cui devi cambiare i diritti di ~ www-data. In primo luogo "chown" la directory di www-data: www-data e dargli i privilegi di scrittura.

La prossima volta se si esegue inkscape tramite PHP (come utente di www-data) verranno create le directory mancanti.