2010-07-10 21 views
6

Ich muss Inkscape in PHP ausführen, damit ich ein Svg-Bild in PDF konvertieren kann. Doch jedes Mal, wenn ich versuche:Run inkscape in PHP

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

bekomme ich keine neue Datei, und ich bekomme dies in dem Apache erro Protokoll.

(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

Ich bin auf Ubuntu mit Apache-Server ausgeführt. Was kann ich tun, um dieses Problem zu beheben?

+0

Wenn sich die Inkscape-Option als zu schwierig erweist, können Sie [TCPDF] (http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf) wie in der Antwort zu [ SVG to PDF auf einem freigegebenen Linux-Server] (http://stackoverflow.com/questions/2143971/svg-to-pdf-on-a-shared-linux-server) hier auf SO. – Mike

Antwort

6

Dies ist auf Systemberechtigungen verwandten, desto einfacher Weg, um eine .gnome2 Ordner im Root-Home-Ordner des Benutzers zu beheben, ist zu erstellen, die diesen Code ausgeführt wird und geben Sie es schreiben Berechtigungen (666 sollte in Ordnung sein).

Beachten Sie, dass wenn Sie dies tun, durch FTP-Ordner/Dateien beginnend mit. (versteckte Dateien auf Linux), möglicherweise nicht in den Auflistungen abhängig von der Konfiguration Ihres Klienten.

Zum Beispiel:

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

Der Benutzer, der versucht, inkscape auszuführen, ist www-data, der Benutzer, der Apache ausführt, denke ich. Wie auch immer, ich glaube, das Problem ist, dass dieser Benutzer keinen Home-Ordner hat, tatsächlich ist der einzige Home-Ordner auf dem PC, auf dem das Problem auftritt, mein Home-Ordner. Ist es möglich, einen Home-Ordner für www-Daten zu erstellen? Würde dies das Problem lösen? Wenn ja, wie kann ich diesen Ordner erstellen? – petermlm

+0

Angenommen, Sie führen dies auf Apache, herauszufinden, unter welchem ​​Benutzer der httpd-Prozess am Anfang ausgeführt wird, und erstellen Sie dann den .gnome2-Ordner unter diesem Benutzer, der das Problem wahrscheinlich beheben wird. Normalerweise läuft Apache unter Apache-Benutzer und Apache-Gruppe, Sie müssen möglicherweise eine /home/apache/.gnome2 erstellen, klingt ungewöhnlich, könnte aber funktionieren. Vergiss nicht zu chown. – Rodrigo

+0

Ich kann es nicht zur Arbeit bringen. Ist es nicht möglich, die sudoers-Datei zu bearbeiten, damit sie funktioniert? – petermlm

0

Inkscape vom Webserver-Benutzer ausgeführt wird normalerweise WWW-Daten. Das Standard-Setup, das Ubuntu für www-data bereitstellt, findet das Home-Verzeichnis von www-data in/var/www.

Ther gibt zwei Möglichkeiten:

a) Ändern des Home-Verzeichnisses von www-data/home/www-data

b) Deaktivieren Sie die Virtualhost in/var/www

In beiden Fälle müssen Sie die Rechte von ~ www-Daten ändern. Zuerst "chown" das Verzeichnis zu www-data: www-data und gebe ihnen Schreibprivilegien.

Nächstes Mal, wenn Sie inkscape über PHP ausführen (als www-data user), werden die fehlenden Verzeichnisse erstellt.

Verwandte Themen