XAMPP führt kein PHP aus

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

XAMPP führt kein PHP aus

Postby pancakeboss » 19. December 2016 10:09

Hallo,

mein Xampp führt folgenden Code nicht aus: Es soll ein Eingabeformular (form-action) erscheinen. Auf dem Server beim Hoster geht es einwandfrei, siehe: http://www.12test.de/
Weshalb ich denke, dass es mit Xampp zu tun hat.

Code: Select all
<?php
define ('ID', 'istausgefüllt');                              
define ('PARTNER_PWD', 'istausgefüllt');                              
define ('PARTNER_PREISRECHNER_EINGABE', 'preisrechner_eingabe.php');   
define ('PARTNER_PREISRECHNER_AUSGABE', 'preisrechner_ausgabe.php');   
define ('PARTNER_POST_TIMEOUT', '2');

eval(gzinflate(base64_decode(
'DdVHDpxaAkDRuTdiWwygyOh3t0XmkaHIkxY551AUq/9ewZXO5P7533/+LM3yo7zS'
.'4Vf9tFM1pEf5K0v3ksT/X5T5XJS/fv4QkkDaV19j62g6EqmSnPvTErGGmWhSWBya'
.'Zx0gr+sAbEF4F8VQFAzrJ/Zd4WWcGNhEEeylPueKYSMafDz0osBKbDoJ5/Rl15hE'
.'RY6/zJNrLZE1vzEl1oTjpsaoMLeqihXlsJil130xnIx7XRdW5O5SFrzNIlBHp+TW'
.'30QhVXTf90hlU1HOelOppgmKxq6pt5Bv6m0t+FnPOreqWVW1kfZxIeQS6MHaMjej'
.'NklUK/PEQ752tKl1w9Q4vmdELIZJIZrQBkmBtN7HZ7I3iD1g6GbgZrVC6TpBMvSF'
.'X1PzxEg6VtyG8K5wrdaXUigHG4o7+AKaUTyptdfETkavbvr1UW8lOYIJx+z8KD6H'
.'pz8ELxo+QQtj3IEaJS+UD+cAqepl+0J6Xjvqq7zced5TaTEOfK+bzkeEIMthcxBu'
.'rxkfEAnAPQcs1ruF6dKpc5DqM/B2A7jxyhuPZQZMZL4XYt121EJ5Gu+hp90Sv5vw'
.'K+6NYDDcJHadB+UEblui2HzIlhSGgtliMjdAiEqFfSPLjjQM2c0kKo+67kKhQoJ1'
.'/ShXc+dLrUqJfTA0tkHcWnUWvKSooQyzM+/di48+38ufrFMbCp6Xh6ZhlJTL6cB9'
.'AUm+Y+LAJTU9qrPUQJK7FCa8ZKIQLcQ43dAyppKdl6QKFwZ6deI7vFswaBb5tMfH'
.'50EmTo3jJEF5MYe19bhDeN51EwqQjxhic5Q5A6lvqGNJM0MsHH8gy2bZYfey9hFy'
.'qZpjCMy46jpGv3d3LSSoUn+RD07DK9EEHyXfia8jXSq34sT4OAQlRo5gfHrTmLeo'
.'1a3pNcuYxUIJVizyDXB/jZNxhDLXau3jpB1oi3t1fcZA9KUXQ9Gxkw6L+DAC1uQH'
.'okwvVI1bbuR9QFMCKr0j0jgAWFbzrT3EDK0vaS83NAmIj0kZFUjkGmm7u7EpWIoJ'
.'3DsVLhDDS+63ZQTgsRIHsp1HpRoRCd1CTuj0NhfWJqvAXx1wLHkauVmQ9goFswVF'
.'+UPfOboJ5rgnt/kKXoqy+50msgMF0Ei5K4Z8tzPPpv3I46U06XPMDHQmvFiOiNCE'
.'DKR3yapc0N5kT89D771DV3TyCtQ8P1jvmtnaIEs8cvb9eHO5pYpw6Q24+sAtIbBj'
.'7ChUxYGOG69PajN05661VODvN/uyVjMvHirlW7R76pXbpLRKD0Bzzi6T/N6PFnKs'
.'d8N9DKpwZhCdCHqQL1+G8JNnSkjJ5LJXYjjMGcabJTZ/xgGOWjqAoGT2HDDam0pZ'
.'YgbptnFPlcJz3wKFMJ9fQ7+j0sXVfaUpO5FPtdnco9w8h+3GLoLsVah1y8Q7B+hq'
.'xGJupj4dUEBmBMBxj0LmdGGKsZNFgen/gjlnqxKXUIxH2P3NhUZHtfVTdF2M4MVm'
.'3SPmZR8y2OgZGT7zhUFtIEDPvjeyezKebUqsO0mIjRya1sCq9y5s8csyFGSJbA8l'
.'l6JBLI6U+tag5JjlV7N+79q71tRGv6s8JlL3dgM93KB+1Rrm5qr5KzQ89U7NcR4U'
.'OeB7J0TgfvluqalTq+mEXwEJLjkHfqOFWj47z9EYhxmchhcVu5MtmkmPfPt5xjpD'
.'1DSAmNfNfrrrtD44r9FF5GfMvSbHQGT1VNNypfST3RDF3sn7O2OxZBBQNVRpYys7'
.'oADF50/qe+WTb4gkapYXyiIjUYMtfFOn6pWmddbYQVCTUWa0icbrW4EupbdPQrRO'
.'ibuafc3OEF2sOs5e3ml8IbRM1AzXBa/m1aYbFXcD7rV6w9zyAFj1272MUGsKvVb0'
.'eRRj2giHWCo0mP5KLSi8dh0l8ma1CfWiEEL6x7RRMcIt70pQlVE+E5zWKouyptNC'
.'ho37klIHMDxND0HDMLy9mG+Bw5/8vz9///79z48/fyf7Lw=='
)));

       
   ?>


Anstelle des Eingabefeldes wird das hier angezeigt:

Code: Select all
")+1); } }return $out; }function generate_xml_from_post () { $xml_string =''; $xml_string.=''; $xml_string.=''.PARTNER_ID.''; $xml_string.=''.md5(PARTNER_PWD).''; $xml_string.=''.$_POST['plz'].''; $xml_string.=''.$_POST['menge'].''; $xml_string.=''.$_POST['abladestellen'].''; $xml_string.='';return $xml_string; }function convert_xml_to_array($xml_string) { $xml = simplexml_load_string($xml_string, 'SimpleXMLElement', LIBXML_NOCDATA); $heizoelpreise_array = json_decode(json_encode($xml), TRUE);return $heizoelpreise_array; }if(isset($_POST) && count($_POST)>0) { // Wenn Formular preisrechner_eingabe.php abgeschickt wurde Preisanfrage starten $xml_input_string=generate_xml_from_post(); // Funktion generate_xml_from_post wandelt die POST-Parameter plz, menge und abladestellen in einen XML-String für den Request um $xml_output_string=post_to_fastenergy($xml_input_string); // Funktion post_to_fastenergy sendet XML-String per POST-Request an FastEnergy -> Response im XML-Format $HEIZOELPREISE_ARRAY=convert_xml_to_array($xml_output_string); // Funktion convert_xml_to_array wandelt XML-Response in ein Array um }// Wenn Formular noch nicht abgeschickt wurde, oder einen Fehler enthält -> Preiseingabe-Formular aufrufen, ansonsten Preisanzeige if(!isset($_POST) || count($_POST)==0 || (isset($HEIZOELPREISE_ARRAY["status"]) && !empty($HEIZOELPREISE_ARRAY["status"]))) include(PARTNER_PREISRECHNER_EINGABE);else include(PARTNER_PREISRECHNER_AUSGABE);
pancakeboss
 
Posts: 8
Joined: 19. December 2016 09:50
XAMPP version: 3.2.1
Operating System: Windows 8.1

Re: XAMPP führt kein PHP aus

Postby Altrea » 19. December 2016 18:15

Hallo,

Wenn dein XAMPP kein PHP ausführen würde, wie erklärst du dann den output? Der ist ja ganz offensichtlich verarbeitet worden, auch wenn er nicht das von dir erwartete Ergebnis zurückgibt.
Ganz nebenbei ist Code der mehrfach mit base64 und gzip verschleiert wird alles andere als vertrauenserweckend und bietet absolut keinen Schutz. Stattdessen erschwert er aber ungemein das debugging.

Das einzige was ich daher sagen kann ist, dass der Code ausgeführt wurde. Was genau der erwartete Output ist musst du selbst wissen und daher wirst auch nur du alleine den Code debuggen können.

Kleiner Nebenkriedsschauplatz: Die Webseite die du da per curl abfragst hat dir hoffentlich schriftlich die Genehmigung für diese Art der Nutzung eingeräumt. Soetwas kann ansonsten unangenehme rechtliche Folgen nach sich ziehen.

mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11935
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: XAMPP führt kein PHP aus

Postby pancakeboss » 20. December 2016 09:29

Hallo,

meine Debug-Datei liefert nur Schrott, deshalb wende ich mich ja an das Forum. Da werden nur ein paar Zeilen generiert, die ein veraltetes Plugin anmeckern. Aber weder die Plugin-Aktualisierung noch das Abschalten aller Plugins zum Ausschließen von Konflikten bringt irgendwas. Syntax-Fehler sind auch nicht der Grund. Ich habe leider 0,00 Anhaltspunkt wo ich suchen muss. Wie schon gesagt: die 1 zu 1 Kopie der Installation unter 12test.de funktioniert.

Hat noch jemand eine Idee?
pancakeboss
 
Posts: 8
Joined: 19. December 2016 09:50
XAMPP version: 3.2.1
Operating System: Windows 8.1

Re: XAMPP führt kein PHP aus

Postby Nobbie » 20. December 2016 12:10

Ich tippe mal darauf, dass bei dem verschlüsselten PHP statt der normalen Tags "<?php" nur die sog. short_tags "<?" generiert/eingebunden wurden, der entsprechende Code wird deswegen nicht vom Interpreter ausgeführt sondern nur durchgereicht. In php.ini gibt die entsprechende Option "short_open_tags", die steht per Default auf "Off", trage da mal "On" ein und starte Apache dann neu.

Das ist aber auf lange Sicht keine adäquate Lösung, weil diese short_tags schon länger auf der Abschussliste des PHP-Developments stehen, besser wäre es, die Tags im Code zu korrigieren, aber ich weiß nicht, wo Dein Zeug überhaupt her kommt. Aber die Ursache würde ich zumindest an dieser Stelle vermuten.
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04

Re: XAMPP führt kein PHP aus

Postby Altrea » 20. December 2016 14:50

Nobbie trifft den Nagel auf dem Kopf.
Nach 4 gzip-dekompressionen und base64_dekodierungen sieht der endgültige Code so aus:

Code: Select all
<?php
define ('ID', 'istausgefüllt');                             
define ('PARTNER_PWD', 'istausgefüllt');                             
define ('PARTNER_PREISRECHNER_EINGABE', 'preisrechner_eingabe.php');   
define ('PARTNER_PREISRECHNER_AUSGABE', 'preisrechner_ausgabe.php');   
define ('PARTNER_POST_TIMEOUT', '2');
?><?
function post_to_fastenergy ($xml_string)
{
   if(function_exists("curl_init"))
   {
      $c = curl_init("http://www.fastenergy.de/partner/heizoel-rechner_xml/");
      if($c)
      {
         curl_setopt($c, CURLOPT_SSL_VERIFYPEER, 0);
         curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 0);
         curl_setopt($c, CURLOPT_POST, 1);
         curl_setopt($c, CURLOPT_POSTFIELDS, $xml_string);
         curl_setopt($c, CURLOPT_TIMEOUT, PARTNER_POST_TIMEOUT);
         curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
         $out = curl_exec($c);
         curl_close($c);
      }
   }
   else
   {
      $url_array = parse_url("http://www.fastenergy.de/partner/heizoel-rechner_xml/");
      $sh = @fsockopen($url_array['host'], 80, $errno, $errstr, PARTNER_POST_TIMEOUT);
      if($sh)
      {
         fputs($sh, "POST " . $url_array['path'] . " HTTP/1.1\r\n");
         fputs($sh, "Host: " . $url_array['host'] . "\r\n");
         fputs($sh, "Content-type: application/x-www-form-urlencoded\r\n");
         fputs($sh, "Content-length: " . strlen($xml_string) . "\r\n");
         fputs($sh, "Connection: close\r\n\r\n");
         fputs($sh, $xml_string . "\r\n\r\n");
         $response = "";
         while(!feof($sh))
            $response .= fread($sh, 8192);
         fclose($sh);
         $response_array = explode("\r\n\r\n", $response);
         $out = $response_array[1];
         $out=substr($out,strpos($out,"<"));
         $out=substr($out,0,strrpos($out,">")+1);
      }
   }

   return $out;
}


function generate_xml_from_post ()
{
   $xml_string ='<?xml version="1.0" encoding="UTF-8" ?>';
   $xml_string.='<preisanfrage>';
   $xml_string.='<partner_id>'.PARTNER_ID.'</partner_id>';
   $xml_string.='<partner_pwd>'.md5(PARTNER_PWD).'</partner_pwd>';
   $xml_string.='<plz>'.$_POST['plz'].'</plz>';
   $xml_string.='<menge>'.$_POST['menge'].'</menge>';
   $xml_string.='<abladestellen>'.$_POST['abladestellen'].'</abladestellen>';
   $xml_string.='</preisanfrage>';

   return $xml_string;
}


function convert_xml_to_array($xml_string)
{
   $xml   = simplexml_load_string($xml_string, 'SimpleXMLElement', LIBXML_NOCDATA);
   $heizoelpreise_array = json_decode(json_encode($xml), TRUE);

   return $heizoelpreise_array;
}


if(isset($_POST) && count($_POST)>0)
{
   // Wenn Formular preisrechner_eingabe.php abgeschickt wurde Preisanfrage starten
   $xml_input_string=generate_xml_from_post();                  // Funktion generate_xml_from_post wandelt die POST-Parameter plz, menge und abladestellen in einen XML-String für den Request um
   $xml_output_string=post_to_fastenergy($xml_input_string);      // Funktion post_to_fastenergy sendet XML-String per POST-Request an FastEnergy -> Response im XML-Format
   $HEIZOELPREISE_ARRAY=convert_xml_to_array($xml_output_string);   // Funktion convert_xml_to_array wandelt XML-Response in ein Array um
}

// Wenn Formular noch nicht abgeschickt wurde, oder einen Fehler enthält -> Preiseingabe-Formular aufrufen, ansonsten Preisanzeige
if(!isset($_POST) || count($_POST)==0 || (isset($HEIZOELPREISE_ARRAY["status"]) && !empty($HEIZOELPREISE_ARRAY["status"])))
   include(PARTNER_PREISRECHNER_EINGABE);

else
   include(PARTNER_PREISRECHNER_AUSGABE);
?>
<?
?>

Wie man unschwer erkennen kann verwendest du hier PHP short_open_tags und genau diese führen nun dazu, dass dein Code nicht funktioniert.
Verwende die lange Form <?php anstatt <? um dieses Problem zu vermeiden.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11935
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: XAMPP führt kein PHP aus

Postby pancakeboss » 21. December 2016 09:33

Super herzlichen Dank!!

Habe nun short open tag aktiviert. Jetzt läuft es. Eine Frage bleibt dann noch: kann ich dann auf die 4 gzip-dekompressionen und base64_dekodierungen verzichten, wenn es wie gesagt wurde gar keinen Schutz bietet?

Danke euch
pancakeboss
 
Posts: 8
Joined: 19. December 2016 09:50
XAMPP version: 3.2.1
Operating System: Windows 8.1

Re: XAMPP führt kein PHP aus

Postby Altrea » 21. December 2016 10:44

Statt die Option zu aktivieren wäre es viel besser diese Tags auszutauschen. Ansonsten bleibt dein Code immer davon abhängig und wird bei dem nächsten PHP Releasewechsel wahrscheinlich wieder nicht auf anhieb funktionieren. Wäre auch nicht das erste Mal dass PHP eine Einstellung ganz rauswirft nachdem sie vorher standardmäßig deaktiviert ausgeliefert wurde.

Ob du auf das ganze maskieren verzichten kannst musst du selbst wissen. Ich weiß ja nicht warum und vor wem du etwas verschleiern möchtest. Aber auch hier der Tipp: die PHP Funktion eval ist auf vielen Servern deaktiviert da sie ein großes Sicherheitsrisiko bedeuten kann wenn sie von unbefugten aufgerufen werden kann.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11935
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: XAMPP führt kein PHP aus

Postby Nobbie » 21. December 2016 11:59

pancakeboss wrote:kann ich dann auf die 4 gzip-dekompressionen und base64_dekodierungen verzichten, wenn es wie gesagt wurde gar keinen Schutz bietet?


Öh - das sollte der Sinn sein, "Schutz" vor irgendwas (vor was eigentlich??)? Ja, das kannst Du getrost sein lassen, das ist total sinnfrei und schützt nichts vor niemandem - hat nur den Nachteil, dass es auch noch schlecht zu lesen und noch schlechter zu debuggen ist. Ich verstehe aber wie gesagt sowieso nicht, wie und warum das irgendeinen Schutz bringen soll?

Und dann ist es wirklich besser, die short_open_tags in php.ini auf Off zu lassen und dafür im Code die Tags zu korrigieren. Sonst tritt das Problem bei jeder Neuinstallation ggf. wieder auf und wenn wirklich mal das PHP Development diese Option entfernt (das war ursprünglich mal für PHP6 vorgesehen, aber das ist ein recht komplexes Thema und dann hat es erst einmal sein gelassen), dann MUSST Du es sowieso ändern.
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 40 guests