Hallo! Ich hab da ein recht unverstaendliches Problem:
Ich will über php eine exe starten, die aus *.ttf dateien *.afm Dateien bildet (Die brauche ich um True Type Schriftarten in FPDF-Scripten zu verwenden zur programmierung von PDF-Dokumenten).
Das Script führt sowohl einen ping befehl korrekt aus, als auch die verwendete ttf2pt1.exe, diese aber nur wenn sie ohne parameter aufgerufen wird. Wenn ich die ttf2pt1.exe jedoch über eine shell mit den gleichen Parametern starte funktioniert alles, nur beim aufruf über php crasht das Programm und das php-modul. (ohne Fehlermeldung, es passiert einfach nix mehr, apache restart notwendig). Die zu erzeugenden Dateien sind allerdings da, leider nur mit 0 Byte größe.
Der Server verwendet eine relativ neue WAMP installation, ca 3Monate alt.
Hier mein script:
<?php
include("makefont.php");
if(isset($HTTP_POST_VARS))foreach($HTTP_POST_VARS as $vname => $vwert) $$vname=$vwert;
if(isset($HTTP_GET_VARS)) foreach($HTTP_GET_VARS as $vname => $vwert) $$vname=$vwert;
//$ttf ist der Name der True-Type Schrift incl. Pfad
if((isset($ttf)))
{
//filtern des reinen dateinamens:
$datname=(substr($ttf,strrpos($ttf,'/')+1,strrpos($ttf,'.')-strrpos($ttf,'/')-1));
$afm=$datname.'.afm';
print $datname."<br>";
$arr=array();
$stat=0;
// $prg='ping 192.168.20.43';
// $prg="ttf2pt1.exe";
//Die beiden oberen funktionieren nur der folgende nicht:
$prg="ttf2pt2.exe -A ".$ttf." ".$datname;
print $prg."<br>";
exec($prg,$arr,$stat);
print "<br>fertsch<br>";
flush();
$i=0;
while(isset($arr[++$i]))
{
print $arr[$i]."<br>";
}
print $stat."<br>";
flush();
if($stat==0)
{
MakeFont($ttf,$afm,'cp1252');
}
}
?>
Wie gesagt, bei eingabe des Befehls in eine Shell im gleichen Directory wo die php liegt, funktioniert alles bestens.
Ich will über php eine exe starten, die aus *.ttf dateien *.afm Dateien bildet (Die brauche ich um True Type Schriftarten in FPDF-Scripten zu verwenden zur programmierung von PDF-Dokumenten).
Das Script führt sowohl einen ping befehl korrekt aus, als auch die verwendete ttf2pt1.exe, diese aber nur wenn sie ohne parameter aufgerufen wird. Wenn ich die ttf2pt1.exe jedoch über eine shell mit den gleichen Parametern starte funktioniert alles, nur beim aufruf über php crasht das Programm und das php-modul. (ohne Fehlermeldung, es passiert einfach nix mehr, apache restart notwendig). Die zu erzeugenden Dateien sind allerdings da, leider nur mit 0 Byte größe.
Der Server verwendet eine relativ neue WAMP installation, ca 3Monate alt.
Hier mein script:
<?php
include("makefont.php");
if(isset($HTTP_POST_VARS))foreach($HTTP_POST_VARS as $vname => $vwert) $$vname=$vwert;
if(isset($HTTP_GET_VARS)) foreach($HTTP_GET_VARS as $vname => $vwert) $$vname=$vwert;
//$ttf ist der Name der True-Type Schrift incl. Pfad
if((isset($ttf)))
{
//filtern des reinen dateinamens:
$datname=(substr($ttf,strrpos($ttf,'/')+1,strrpos($ttf,'.')-strrpos($ttf,'/')-1));
$afm=$datname.'.afm';
print $datname."<br>";
$arr=array();
$stat=0;
// $prg='ping 192.168.20.43';
// $prg="ttf2pt1.exe";
//Die beiden oberen funktionieren nur der folgende nicht:
$prg="ttf2pt2.exe -A ".$ttf." ".$datname;
print $prg."<br>";
exec($prg,$arr,$stat);
print "<br>fertsch<br>";
flush();
$i=0;
while(isset($arr[++$i]))
{
print $arr[$i]."<br>";
}
print $stat."<br>";
flush();
if($stat==0)
{
MakeFont($ttf,$afm,'cp1252');
}
}
?>
Wie gesagt, bei eingabe des Befehls in eine Shell im gleichen Directory wo die php liegt, funktioniert alles bestens.
Kommentar