6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)
  • Q:
    Bijdrager
    fibe

    ImageMagick probleem [opgelost]

    Ik zit met een vreemd probleem.
    Als ik in m’n terminal ImageMagick test (van pdf naar jpg, van jpg naar gif…) gaat alles goed.
    Als ik via php ImageMagick bedien lijkt alles te lukken buiten het converteren van pdf naar een pixelbestand.
    Om een pdf te kunnen converteren heb ik wel ghostscript geïnstalleerd.
    Misschien heeft dat er iets mee te maken?

    Deze lijn gebruik ik voor jpg naar gif:

    [code:1:7a36221111]<?php
    system ("/usr/local/bin/convert beeld/logo.jpg beeld/test.gif");
    ?>[/code:1:7a36221111]

    … en deze voor pdf naar jpg:

    [code:1:7a36221111]<?php
    system ("/usr/local/bin/convert beeld/logo.pdf beeld/test.jpg");
    ?>[/code:1:7a36221111]

    Terwijl dit in de terminal wel werkt:

    [code:1:7a36221111]cd /library/webserver/documents
    /usr/local/bin/convert beeld/logo.pdf beeld/test2.gif[/code:1:7a36221111]

    Heeft de www user misschien geen toegang tot ghostscript?

    Bijdrager
    wKamsma

    Probeer eens een absoluut pad. Je geeft namelijk aan dat je in de terminal eerst naar de correcte map cd’t. Dit kan PHP natuurlijk niet weten:wink:

    Bijdrager
    klaasb

    Wanneer php in safe mode draait, dien je in je php.ini aan te geven waar de zogenaamde ‘safe execs’ staan. Programmaatjes die dus wel aangeroepen kunnen worden met bijv. exec().

    Bij sommige hosting providers zie je dat die safe_exec_dir dus huidige dir (. dus) is.

    Je moet dan even een kopie van de executable in deze dir als je php-scirpt zetten

    bijv.
    exec(./mogrify -scale 100 $image);

    Bijdrager
    fibe
    ”wKamsma”

    Probeer eens een absoluut pad. Je geeft namelijk aan dat je in de terminal eerst naar de correcte map cd’t. Dit kan PHP natuurlijk niet weten:wink:

    Nee, daar ligt het niet aan want Apache 1.3 van osX draait in /library/webserver/documents.
    De map “beeld” staat in /library/webserver/documents/beeld.

    Bovendien heb ik ook al geproberd met full path’s en werkt de conversie van pixelbestand naar pixelbestand gewoon wel. Het is ghostscript die lastig doet.

    Bijdrager
    fibe
    ”klaasb”

    Wanneer php in safe mode draait, dien je in je php.ini aan te geven waar de zogenaamde ‘safe execs’ staan. Programmaatjes die dus wel aangeroepen kunnen worden met bijv. exec().

    Bij sommige hosting providers zie je dat die safe_exec_dir dus huidige dir (. dus) is.

    Je moet dan even een kopie van de executable in deze dir als je php-scirpt zetten

    bijv.
    exec(./mogrify -scale 100 $image);

    Ik heb er net even m’n php.ini op nagekeken maar safe mode staat af:

    [code:1:17acaf5d04];
    ; Safe Mode
    ;
    safe_mode = Off

    ; By default, Safe Mode does a UID compare check when
    ; opening files. If you want to relax this to a GID compare,
    ; then turn on safe_mode_gid.
    safe_mode_gid = Off

    ; When safe_mode is on, UID/GID checks are bypassed when
    ; including files from this directory and its subdirectories.
    ; (directory must also be in include_path or full path must
    ; be used when including)
    safe_mode_include_dir =

    ; When safe_mode is on, only executables located in the safe_mode_exec_dir
    ; will be allowed to be executed via the exec family of functions.
    safe_mode_exec_dir =
    [/code:1:17acaf5d04]

    Ik ben nu even een andere computer aan het installeren zonder ESP GhostScript die bij Gimp-Print zit. Die GhostScript is versie 7.07.1, en we zitten nu aan 8.54. Mogelijk gebruikt php dus die oude versie.

    Als dat niet werkt dan heb ik voorlopig alle opties gehad.

    Bijdrager
    fibe

    Ik heb het nu wel werkend gekregen, en dit heb ik daarvoor gedaan:

    – Een mac volledig opnieuw geïnstalleerd zonder gimp-print (die blijkbaar een oude versie van ghostsctipt installeert)
    – Manueel ImageMagick v6.2.9 geïnstalleerd (zonder darwinports – of moet ik nu macports zeggen :|)
    – Manueel GhostScript v8.54 geïnstalleerd (ook zonder macports)
    – PHP 5.1.4 voor Apache 1.3 van entropy geïnstalleerd (.mpkg)

    Vervolgens via php dit naar de terminal gestuurd:

    [code:1:ac7c38066f]<?php
    system("/usr/local/bin/gs -sDEVICE=jpeg -o /library/webserver/documents/beeld/geconverteerde.jpg /library/webserver/documents/beeld/bestaande.pdf");
    ?>[/code:1:ac7c38066f]

    En ja hoor, nu werkt het allemaal netjes.

6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.