Probleme mit MAMP und exec() - Rechteproblem?

S

sideshow

Mitglied
Thread Starter
Dabei seit
24.01.2005
Beiträge
92
Reaktionspunkte
0
Tag allerseits!

Ich bin gerade etwas ratlos - hoffentlich habt ihr einen Tipp für mich!

Ich möchte ein PDF in ein PPM umwandeln (bzw. ist es mir momentan relativ wurscht ob da jetzt ein .ppm oder .gif oder .jpg oder .png rauskommt). Das funzt auch wunderbar wenn ich das über die Konsole mach:

Code:
convert -density 1200 /Applications/MAMP/htdocs/Sandbox/AdReader/filepool/incoming/100097988.pdf /Applications/MAMP/htdocs/Sandbox/AdReader/filepool/_tmp/100097988.ppm

Über die Konsole geht das auch ganz wunderbar. Ich benutze MAMP - steht ja oben :). Wenn ich jetzt mein Script ausführe sieht das so aus:

Code:
/opt/local/bin/convert -density 1200 /Applications/MAMP/htdocs/Sandbox/AdReader/filepool/incoming/100097988.pdf /Applications/MAMP/htdocs/Sandbox/AdReader/filepool/_tmp/100097988.ppm

Ich muss den Pfad zum convert auch so angeben weil es sonst die Fehlermeldung gibt das convert nicht gefunden werden konnte.

Nur braucht ImageMagick zum PDF umwandeln GhostScript. Und das wird in meiner Entwicklungsumgebung nicht gefunden. Dann hagelt es die Fehlermeldung:

Code:
sh: gs: command not found
convert: Postscript delegate failed `/Applications/MAMP/htdocs/Sandbox/AdReader/filepool/incoming/100097988.pdf': No such file or directory @ pdf.c/ReadPDFImage/630.
convert: missing an image filename `/Applications/MAMP/htdocs/Sandbox/AdReader/filepool/_tmp/100097988.ppm' @ convert.c/ConvertImageCommand/2819.

Ich denke das es an MAMP liegt - bzw. das da die Pfade oder Berechtigungen nicht passen. Hat jemand ne Idee?
 
das problem wird eher darin liegen, dass du gs nicht im pfad hast für sh...
setzt du den PATH für macports auch in der /etc/profile?
 
das problem wird eher darin liegen, dass du gs nicht im pfad hast für sh...
setzt du den PATH für macports auch in der /etc/profile?

Ähm... tja... mh... :confused:

Ich muss leider zugeben das ich jetzt nicht sooo fit bin im Terminal. Ich kann dir zwar sagen das ich ImageMagick und GhostScript über Macports installiert hab (weil anders hab ich's nicht hinbekommen... mit dem Kompilieren und dem ganzen Zeug werd ich einfach nicht warm..) aber ob ich jetzt da irgend nen Pfad gesetzt hab? Nö, also ich glaub nicht!

Für was muss ich den Pfad setzen? Und warum klappt es denn dann wenn ich das im Terminal mach und per exec() in PHP nicht?
 
Für was muss ich den Pfad setzen? Und warum klappt es denn dann wenn ich das im Terminal mach und per exec() in PHP nicht?

Du bzw. dein Nutzer und der Nutzer der exec() ausführt nutzen ev. nicht den gleichen PATH. (Dein Nutzer hat wahrscheinlich den PATH in ~/.bash_profile oder ~/.profile gesetzt.)

Du musst den Pfad für den gs setzten, wie der lautet kannst du mittels
Code:
which gs
herausbekommen. Es ist wohl "/opt/local/bin/".

Allerdings bin ich mir nicht 100% sicher wo du diesen Pfad ergänzen musst. Der Systemweite PATH wird normalerweise in /etc/profile definiert, seit Leopard gibt es aber auch /etc/paths.d und /etc/paths und ich habe keine Ahnung wo Apple Ergänzungen bevorzugt.

BTW ein Deja Vu ;-)
 
Allerdings bin ich mir nicht 100% sicher wo du diesen Pfad ergänzen musst. Der Systemweite PATH wird normalerweise in /etc/profile definiert, seit Leopard gibt es aber auch /etc/paths.d und /etc/paths und ich habe keine Ahnung wo Apple Ergänzungen bevorzugt.

in der /etc/profile wird path_helper aufgerufen dafür.
der nimmt halt die sachen aus /etc/paths.d und packt die hinten an den PATH...

für den zweck sollte es nicht so wichtig sein, dass macports vorne im path steht. gs und convert sind ja nicht im system, sondern nur bei macports.

in der user profile wird es ja für den user eh wieder nach vorne gepackt...
 
in der /etc/profile wird path_helper aufgerufen dafür.
der nimmt halt die sachen aus /etc/paths.d und packt die hinten an den PATH...

für den zweck sollte es nicht so wichtig sein, dass macports vorne im path steht. gs und convert sind ja nicht im system, sondern nur bei macports.

in der user profile wird es ja für den user eh wieder nach vorne gepackt...

Hm, soweit hatte ich das schon durchschaut :) (So wird es auch in der Manpage von path_helper erklärt). Aber was ist denn nun die Best Practice für Ergänzungen? /etc/paths oder /etc/paths.d? Sorry für diese OT Frage.

@sideshow
Du solltest also /etc/paths um den Pfad von gs ergänzen.
 
man sollte nicht mit system teilen fuschen, wenn man nicht weiß was man tut ;)
daher /etc/paths.d ...
denke mal /etc/paths könnte überschrieben werden bei einem update...
 
So, vielen Dank erst mal an euch!!!

Das mit den Pfaden hab ich jetzt denk ich begriffen - ist wohl vergleichbar mit ini_set('include_path' ...) in PHP, oder?

Ich habe nun den Pfad /opt/local/bin in /etc/paths ergänzt. Leider aber ohne Erfolg. MAMP bringt mir immer noch die gleichen Fehlermeldungen! :(

Aus der /etc/paths.d werd ich nicht ganz schlau. Habe die mit vim aufgemacht aber aus dem Kommentar und dem X11 Zeugsl werd ich nicht ganz schlau!
 
in /etc/paths.d legst du einfach eine textdatei ab, z.b. mit name mamp und schreibst da einfach /opt/local/bin rein.
das ist alles.

unter welchem user läuft denn der MAMP?
 
OK - verstanden!

MAMP läuft unter meinem Benutzer. Der Apache (also httpd) läuft auch unter meinem Benutzer. Und das komischerweise ganz schön oft. Und dann läuft httpd auch ein mal als root - wobei das glaub ich der OSX eigene ist.

Hab halt über den Befehl "top" im Terminal geschaut - war das richtig?
 
ja, top geht auch.
weiß jetzt nicht, ob der apache exec mit dem eigenen user ausführt oder nobody...
 
AHHHHH! Ich hab's geschafft! Puh!!!

Ihr hattet ganz recht mit den Pfaden. Nur benutzt MAMP eine eigene Datei wo man die Pfade ergänzen muss.

Diese Datei hier wird benutzt: /Applications/MAMP/Library/bin/envvars

Hier muss der Pfad eingetragen werden. Habe ich hier gefunden -> http://www.brybot.ca/archives/getting-imagemagick-and-more-to-work-with-mamp-on-os-x/

Vielen Dank für eure Hilfe - ohne diese wär ich wohl nie drauf gekommen!!!
 
Zurück
Oben Unten