• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP Server Scripts im Browser ausführen

NetAktiv

Senior HTML'ler
Hallo,

manchmal ist es beim Testen nervig, wenn man beispielsweise nur eine Syntaxprüfung machen will und deswegen ein PHP-Script extra auf den Server laden und aufrufen muss. Ich habe mir ein kleine PHP-Seite geschrieben, mit der ich PHP im Browser eingeben und auf dem Server ausführen kann. Eventuell finden es andere ja auch nützlich und daher stelle ich das Script hier bereit.

Achtung: Klar, mit Zugriff auf das Script hat man Zugriff auf alles mit den Privilegien des Web Servers, also nur in absolut gesicherten Verzeichnissen bereitstellen. Ich übernehme keinerlei Support oder Verantwortung.

Grüße,
Rainer

PHP:
<?php
 
    //Eingabe prüfen und globale Variable initilisieren
    $g_sPhpScript          = (isset($_REQUEST["test_menu_inp"]) ? stripcslashes($_REQUEST["test_menu_inp"]) : "");
    $g_sResDivDisplayStyle = ($g_sPhpScript) ? "block" : "none";
    $g_sTmpDir             = "./tmp";  //Unterverzeichnis für temporäre Dateien
   
    //Hauptprogramm definieren, Ausgabe erfolt im Result-Div
    function main() {
       
        //Ohne Input keine Aktion
        global $g_sPhpScript, $g_sTmpDir;
        if (!$g_sPhpScript) return;
       
        //Optional Unterverzeichnis erstellen, falls es nicht existiert
        if ((!is_dir($g_sTmpDir)) && mkdir($g_sTmpDir)) echo "Verzeichnis $g_sTmpDir wurde neu erstellt<br/>";

        //Input analysieren und Output vorbereiten
        $bDeleteScript = (isset($_REQUEST["cbx_delete"]) ? $_REQUEST["cbx_delete"] : false);
        $sDeleteSpan   = "test_result_" . (($bDeleteScript) ? "green" : "red");       
        $scriptName    = tempnam($g_sTmpDir, "server_php_tmp_");
       
        //Temporäre Script Datei erstellen
        $fp = fopen($scriptName, "w");
        fwrite($fp, "<?php \n" . $g_sPhpScript . "\n?>");
        fclose($fp);

        //Script ausführen und Ergebnis ausgeben
        echo "<span class='test_result_red'>Ergebnis des Scripts $scriptName:</span><br/><br/>";
        require($scriptName);
        echo "<br/><br/><span class='" . $sDeleteSpan . "'>Script wurde " . (($bDeleteScript) ? "" : "nicht ") .  "gelöscht!</span>";
       
        //Optional temporäre Script Datei erstellen löschen
        if ($bDeleteScript) unlink($scriptName);
    }
?>
<!DOCTYPE html>
<html>
<head>
    <title>PHP Server Kommandos</title>
    <meta charset="utf-8">
    <style type="text/css">
        body { font-family: sans-serif; }
        .button { width: 120px; margin-top:10px}
        .copyright { margin: 0 auto; width:300px; }
        .clear  { clear:both; }
        #test_data   { width: 800px; margin:0 auto; }
       
        #test_menu_inp { width:450px; height: 200px; }
        #test_menu_form { float:left; width:450px; }
        #test_menu_text { float:left; width:300px; font-size:11pt; padding-right:15px}
       
        .test_result_red   { color:red; font-weight:bold; font-size:larger; } /*span als head im test_result_text*/
        .test_result_green { color:green; font-weight:bold; font-size:larger; } /*span als head im test_result_text*/
        #test_result_text { width:780px; background-color:black; color:white; font-style:monospace;
                            margin-top: 20px; padding:8px; display:none;
                            overflow: scroll; max-height: 600px; white-space:pre-line; font-size:10pt}
       
    </style>
    <script type="text/javascript">
        var g_iSampleNr = 0;
        function makeSample() {
            try {
                ++g_iSampleNr;
                var sSample  = "";
                sSample += "echo 'Beispiel Nummer " + g_iSampleNr + " Array füllen<br/>';\n";
                sSample += "date_default_timezone_set('Europe/Berlin');\n";
                sSample += "$myArray = array();\n";
                sSample += "$myArray['test_text'] = 'Beispiel Text';\n";
                sSample += "$myArray['test_zeit'] = date('d.m.Y H:i:s');\n";
                sSample += "$myArray['test_nr'] = " + g_iSampleNr + ";\n";
                sSample += "echo 'Nun Array mit var_dump ausgeben<br/>';\n";           
                sSample += "var_dump($myArray);\n";           
                document.getElementById('test_menu_inp').value = sSample;
            } catch(e) {
                alert(e);
            }
        }

        function clearInput() {
            try {
                document.getElementById('test_menu_inp').value = '';
                document.getElementById('test_result_text').style.display = 'none';
            } catch(e) {
                alert(e);
            }
        }       
    </script>
</head>
<body >
<div id="test_data">
    <form method="POST" action="<?php echo $_SERVER['PHP_SELF'] ?>">
    <div id="test_menu">  
        <div id="test_menu_text">
            Man kann hier ein PHP Script eingeben und auf dem Server ausführen lassen. Der Script-Text
            wird auf den Server übertragen und in eine temporäre Datei geschrieben. Das Script wird dann
            ausgeführt und optional gelöscht. Das Ergebnis wird hier angezeigt.  
            <br/>     
            <input type="button" value=" Löschen"  name="btn_reset"  class="button" onclick="javascript:clearInput();">
            &nbsp;&nbsp;
            <input type="checkbox" name="cbx_delete" checked="checked" value="1">&nbsp;<span style="font-size:smaller">Scriptdatei löschen<span>
            <br/>
            <input type="button" value=" Beispiel" name="btn_example" class="button" onclick="javascript:makeSample();">
            &nbsp;&nbsp;
            <input type="submit" value="Ausführen" name="btn_submit"  class="button">      
        </div>
        <div id="test_menu_form">
            <textarea rows="5" required placeholder="hier das PHP Script eingeben" id="test_menu_inp" name="test_menu_inp"><?php echo $g_sPhpScript; ?></textarea>
        </div> 
    </div>
    </form>
    <div class="clear"></div>
    <div class="codebox" id="test_result_text" style='display:<?php echo $g_sResDivDisplayStyle; ?>;'><?php main(); ?></div>
    <hr>
    <div class="copyright">Copyright 2015 NetAktiv, Neufahrn</div>
</div> <!-- end div id=test_data -->

</body>
</html>
 
Werbung:
Hallo,

manchmal ist es beim Testen nervig, wenn man beispielsweise nur eine Syntaxprüfung machen will und deswegen ein PHP-Script extra auf den Server laden und aufrufen muss. Ich habe mir ein kleine PHP-Seite geschrieben, mit der ich PHP im Browser eingeben und auf dem Server ausführen kann. Eventuell finden es andere ja auch nützlich und daher stelle ich das Script hier bereit.

Achtung: Klar, mit Zugriff auf das Script hat man Zugriff auf alles mit den Privilegien des Web Servers, also nur in absolut gesicherten Verzeichnissen bereitstellen. Ich übernehme keinerlei Support oder Verantwortung.

Grüße,
Rainer

PHP:
<?php

    //Eingabe prüfen und globale Variable initilisieren
    $g_sPhpScript          = (isset($_REQUEST["test_menu_inp"]) ? stripcslashes($_REQUEST["test_menu_inp"]) : "");
    $g_sResDivDisplayStyle = ($g_sPhpScript) ? "block" : "none";
    $g_sTmpDir             = "./tmp";  //Unterverzeichnis für temporäre Dateien
  
    //Hauptprogramm definieren, Ausgabe erfolt im Result-Div
    function main() {
      
        //Ohne Input keine Aktion
        global $g_sPhpScript, $g_sTmpDir;
        if (!$g_sPhpScript) return;
      
        //Optional Unterverzeichnis erstellen, falls es nicht existiert
        if ((!is_dir($g_sTmpDir)) && mkdir($g_sTmpDir)) echo "Verzeichnis $g_sTmpDir wurde neu erstellt<br/>";

        //Input analysieren und Output vorbereiten
        $bDeleteScript = (isset($_REQUEST["cbx_delete"]) ? $_REQUEST["cbx_delete"] : false);
        $sDeleteSpan   = "test_result_" . (($bDeleteScript) ? "green" : "red");      
        $scriptName    = tempnam($g_sTmpDir, "server_php_tmp_");
      
        //Temporäre Script Datei erstellen
        $fp = fopen($scriptName, "w");
        fwrite($fp, "<?php \n" . $g_sPhpScript . "\n?>");
        fclose($fp);

        //Script ausführen und Ergebnis ausgeben
        echo "<span class='test_result_red'>Ergebnis des Scripts $scriptName:</span><br/><br/>";
        require($scriptName);
        echo "<br/><br/><span class='" . $sDeleteSpan . "'>Script wurde " . (($bDeleteScript) ? "" : "nicht ") .  "gelöscht!</span>";
      
        //Optional temporäre Script Datei erstellen löschen
        if ($bDeleteScript) unlink($scriptName);
    }
?>
<!DOCTYPE html>
<html>
<head>
    <title>PHP Server Kommandos</title>
    <meta charset="utf-8">
    <style type="text/css">
        body { font-family: sans-serif; }
        .button { width: 120px; margin-top:10px}
        .copyright { margin: 0 auto; width:300px; }
        .clear  { clear:both; }
        #test_data   { width: 800px; margin:0 auto; }
      
        #test_menu_inp { width:450px; height: 200px; }
        #test_menu_form { float:left; width:450px; }
        #test_menu_text { float:left; width:300px; font-size:11pt; padding-right:15px}
      
        .test_result_red   { color:red; font-weight:bold; font-size:larger; } /*span als head im test_result_text*/
        .test_result_green { color:green; font-weight:bold; font-size:larger; } /*span als head im test_result_text*/
        #test_result_text { width:780px; background-color:black; color:white; font-style:monospace;
                            margin-top: 20px; padding:8px; display:none;
                            overflow: scroll; max-height: 600px; white-space:pre-line; font-size:10pt}
      
    </style>
    <script type="text/javascript">
        var g_iSampleNr = 0;
        function makeSample() {
            try {
                ++g_iSampleNr;
                var sSample  = "";
                sSample += "echo 'Beispiel Nummer " + g_iSampleNr + " Array füllen<br/>';\n";
                sSample += "date_default_timezone_set('Europe/Berlin');\n";
                sSample += "$myArray = array();\n";
                sSample += "$myArray['test_text'] = 'Beispiel Text';\n";
                sSample += "$myArray['test_zeit'] = date('d.m.Y H:i:s');\n";
                sSample += "$myArray['test_nr'] = " + g_iSampleNr + ";\n";
                sSample += "echo 'Nun Array mit var_dump ausgeben<br/>';\n";          
                sSample += "var_dump($myArray);\n";          
                document.getElementById('test_menu_inp').value = sSample;
            } catch(e) {
                alert(e);
            }
        }

        function clearInput() {
            try {
                document.getElementById('test_menu_inp').value = '';
                document.getElementById('test_result_text').style.display = 'none';
            } catch(e) {
                alert(e);
            }
        }      
    </script>
</head>
<body >
<div id="test_data">
    <form method="POST" action="<?php echo $_SERVER['PHP_SELF'] ?>">
    <div id="test_menu"> 
        <div id="test_menu_text">
            Man kann hier ein PHP Script eingeben und auf dem Server ausführen lassen. Der Script-Text
            wird auf den Server übertragen und in eine temporäre Datei geschrieben. Das Script wird dann
            ausgeführt und optional gelöscht. Das Ergebnis wird hier angezeigt. 
            <br/>    
            <input type="button" value=" Löschen"  name="btn_reset"  class="button" onclick="javascript:clearInput();">
            &nbsp;&nbsp;
            <input type="checkbox" name="cbx_delete" checked="checked" value="1">&nbsp;<span style="font-size:smaller">Scriptdatei löschen<span>
            <br/>
            <input type="button" value=" Beispiel" name="btn_example" class="button" onclick="javascript:makeSample();">
            &nbsp;&nbsp;
            <input type="submit" value="Ausführen" name="btn_submit"  class="button">     
        </div>
        <div id="test_menu_form">
            <textarea rows="5" required placeholder="hier das PHP Script eingeben" id="test_menu_inp" name="test_menu_inp"><?php echo $g_sPhpScript; ?></textarea>
        </div>
    </div>
    </form>
    <div class="clear"></div>
    <div class="codebox" id="test_result_text" style='display:<?php echo $g_sResDivDisplayStyle; ?>;'><?php main(); ?></div>
    <hr>
    <div class="copyright">Copyright 2015 NetAktiv, Neufahrn</div>
</div> <!-- end div id=test_data -->

</body>
</html>

Danke dass du dein Script teilst, aber es gibt dafür bereits Lösungen.
Und um die eigene Sicherheit muss man sich da keine Gedanken machen:
http://www.tehplayground.com
http://phpfiddle.org
 
Hallo scbawik,

die Seite http://www.tehplayground.com war mir nicht bekannt, zeigt aber, dass ich offenbar nicht der einzige bin, der einen Bedarf für so ein Tool hat. Vorteil meiner Lösung ist, dass ich wirklich in der Umgebung meines Providers bin, also auf seinen HP Unix-Servern mit seiner PHP Version mit seinen INI-Einstellungen, die ich als einfacher Homepage Inhaber nicht ändern kann.

Grüße, Rainer
 
Werbung:
Um es mal ganz deutlich zu machen:

Finger weg von diesem Script! Soetwas hat auf keinem Server etwas zu suchen! Mal ganz davon abgesehen, dass es umständlich und schlecht programmiert ist.

Außerdem habe ich noch nie für eine Syntax-Prüfung ein Script auf einen Server kopieren müssen, dafür hat man eine lokale Entwicklunsumgebung.
 
Hallo bdt600,

deine doch etwas polemische Antwort kann ich nicht unbeantwortet lassen.

So etwas hat auf keinem Server etwas zu suchen!
Du begründest diese Aussage (wie auch alle anderen) nicht, aber ich nehme mal an, du meinst den Sicherheitsaspekt. Wenn das Script in einem Passwort geschützten Verzeichnis liegt, dann ist es genauso sicher, wie das Passwort und wenn ich schlechte Passwörter habe, dann ist es egal, ob mein Server über Login, FTP oder HTTP geknackt wird. .

Mal ganz davon abgesehen, dass es umständlich und schlecht programmiert ist.
Mir ist schon bewusst, dass man das eine oder andere hätte eleganter machen können. Aber meine Homepage ist mein Hobby und wenn ich in 2 Jahren mal wieder den Code anschaue, will ich nicht 1h damit verbringen, meinen eigenen optimierten Code wieder zu verstehen. also schreibe ich beispielsweise in 2 Zeilen 1) fp=open und 2) write statt in einer if (fp=open) write. Oder ich nehme auch mal &nbsp; für den Abstand von HTML Elementen, statt extra ein margin oder padding zu definieren. Wie gesagt, optimal ist der Code sicher nicht, aber aus meiner Sicht auch nicht schlecht.

Und wenn man schon so pauschale Aussagen macht, dann sollte man sich eventuell auch noch 2 Minuten Zeit nehmen, diese zu begründen und mit Verbesserungsvorschlägen zu versehen, um den Betroffenen die Gelegenheit zu geben, ihr Fehler in Zukunft zu vermeiden. Meckern und inhaltlos herum zu kritisieren ist einfach, es besser zu machen oft einiges schwerer.

Außerdem habe ich noch nie für eine Syntax-Prüfung ein Script auf einen Server kopieren müssen, dafür hat man eine lokale Entwicklunsumgebung.
Die habe ich auch, aber wie bereits gesagt, kann ich es mir nicht erlauben, einen HP Unix Server als Referenz zu betreiben. Und ich habe schon einige Überraschungen erlebt, wenn ich meine Windows/IIS PHP Scripte nach Unix/Apache kopiert habe, es ist nämlich durchaus nicht immer PHP auch gleich PHP. Und ich wiederhole mich, wenn ich sage, dass es wohl einige andere gibt, die froh sind, dass es diese PHP Tester im Netz gibt, um mal ein Codeschnipsel zu testen.

Grüße, Rainer
 
Werbung:
Du begründest diese Aussage (wie auch alle anderen) nicht, aber ich nehme mal an, du meinst den Sicherheitsaspekt. Wenn das Script in einem Passwort geschützten Verzeichnis liegt, dann ist es genauso sicher, wie das Passwort und wenn ich schlechte Passwörter habe, dann ist es egal, ob mein Server über Login, FTP oder HTTP geknackt wird.
Und was passiert, wenn du dummerweise mal ein Script testest, das irgendwelche Daten oder Dateien löscht? Die Gefahr auf einem Produktivsystem ist viel zu hoch!
Und wenn man schon so pauschale Aussagen macht, dann sollte man sich eventuell auch noch 2 Minuten Zeit nehmen, diese zu begründen und mit Verbesserungsvorschlägen zu versehen
Na gut, wie du möchtest:
  1. Globale Variablen sollte man stets vermeiden
  2. PHP_SELF sollte man ebenfalls vermeiden
  3. Das Script in eine Datei schreiben ist ebenfalls unnötig
Die habe ich auch, aber wie bereits gesagt, kann ich es mir nicht erlauben, einen HP Unix Server als Referenz zu betreiben.
Ein Parse-Error bekommst du unabhängig von der Plattform. Ich programmiere schon länger auf Windows und die Produktivserver laufen unter Linux. Ich habe noch nie einen Parse-Error nur auf dem Server bekommen.

Auf die Schnelle:
PHP:
<?php

    $php = "";
    $style = "none";

    if (isset($_POST['test_menu_inp']))
    {
        $php = stripcslashes($_POST['test_menu_inp']);
        $style = "block" ;
    }
    //Hauptprogramm definieren, Ausgabe erfolt im Result-Div
    function main($php)
    {
        if (strlen($php))
        {          
           $return = @eval($php);
     
           if ($return === false && ($error = error_get_last()))
              echo ($error['message'] . " Zeile " . $error['line']);
        }
    }
?>
<!DOCTYPE html>
<html>
<head>
    <title>PHP Server Kommandos</title>
    <meta charset="utf-8">
    <style type="text/css">
        body { font-family: sans-serif; }
        .button { width: 120px; margin-top:10px}
        .copyright { margin: 0 auto; width:300px; }
        .clear  { clear:both; }
        #test_data   { width: 800px; margin:0 auto; }
    
        #test_menu_inp { width:450px; height: 200px; }
        #test_menu_form { float:left; width:450px; }
        #test_menu_text { float:left; width:300px; font-size:11pt; padding-right:15px}
    
        .test_result_red   { color:red; font-weight:bold; font-size:larger; } /*span als head im test_result_text*/
        .test_result_green { color:green; font-weight:bold; font-size:larger; } /*span als head im test_result_text*/
        #test_result_text { width:780px; background-color:black; color:white; font-style:monospace;
                            margin-top: 20px; padding:8px; display:none;
                            overflow: scroll; max-height: 600px; white-space:pre-line; font-size:10pt}
    
    </style>
    <script type="text/javascript">
        var g_iSampleNr = 0;
        function makeSample() {
            try {
                ++g_iSampleNr;
                var sSample  = "";
                sSample += "echo 'Beispiel Nummer " + g_iSampleNr + " Array füllen<br/>';\n";
                sSample += "date_default_timezone_set('Europe/Berlin');\n";
                sSample += "$myArray = array();\n";
                sSample += "$myArray['test_text'] = 'Beispiel Text';\n";
                sSample += "$myArray['test_zeit'] = date('d.m.Y H:i:s');\n";
                sSample += "$myArray['test_nr'] = " + g_iSampleNr + ";\n";
                sSample += "echo 'Nun Array mit var_dump ausgeben<br/>';\n";       
                sSample += "var_dump($myArray);\n";       
                document.getElementById('test_menu_inp').value = sSample;
            } catch(e) {
                alert(e);
            }
        }
        function clearInput() {
            try {
                document.getElementById('test_menu_inp').value = '';
                document.getElementById('test_result_text').style.display = 'none';
            } catch(e) {
                alert(e);
            }
        }   
    </script>
</head>
<body >
<div id="test_data">
    <form method="POST" action="<?php echo $_SERVER['SCRIPT_NAME'] ?>">
    <div id="test_menu">
        <div id="test_menu_text">
            Man kann hier ein PHP Script eingeben und auf dem Server ausführen lassen. Der Script-Text
            wird auf den Server übertragen und in eine temporäre Datei geschrieben. Das Script wird dann
            ausgeführt und optional gelöscht. Das Ergebnis wird hier angezeigt.
            <br/> 
            <input type="button" value=" Löschen"  name="btn_reset"  class="button" onclick="javascript:clearInput();">
            &nbsp;&nbsp;
            <input type="checkbox" name="cbx_delete" checked="checked" value="1">&nbsp;<span style="font-size:smaller">Scriptdatei löschen<span>
            <br/>
            <input type="button" value=" Beispiel" name="btn_example" class="button" onclick="javascript:makeSample();">
            &nbsp;&nbsp;
            <input type="submit" value="Ausführen" name="btn_submit"  class="button">   
        </div>
        <div id="test_menu_form">
            <textarea rows="5" required placeholder="hier das PHP Script eingeben" id="test_menu_inp" name="test_menu_inp"><?php echo $php; ?></textarea>
        </div>
    </div>
    </form>
    <div class="clear"></div>
    <div class="codebox" id="test_result_text" style='display:<?php echo $style; ?>;'><?php main($php); ?></div>
    <hr>
    <div class="copyright">Copyright 2015 NetAktiv, Neufahrn, corrected by bdt600</div>
</div> <!-- end div id=test_data -->
</body>
</html>
 
Zuletzt bearbeitet von einem Moderator:
Hallo bdt600,

na da waren doch ein paar nützliche Tipps.

Und was passiert, wenn du dummerweise mal ein Script testest, das irgendwelche Daten oder Dateien löscht?
Das kann mir, wenn ich unachtsam bin, mit einem FTP Client auch passieren. Aber wie gesagt, ich habe auch keine hochbrisanten Daten und hochaktuellen, sondern eine private Homepage, deren Backup der Provider täglich macht und ich habe sowieso die Kopie in der Entwicklungsumgebung.

1. Globale Variablen sollte man stets vermeiden
Das versuche ich ja auch, aber das Temp-Verzeichnis wollte wegen der Lesbarkeit für andere oben. Ich hätte natürlich auch einen define verwenden können, das wäre vermutlich besser. Aber wie soll ich sonst die Variablen ins HTML bekommen. Ich sehe dann nur, eine Klasse definieren (mit Klassenvariablen) und statt der echo $g_sVariable auf die Klassenvariablen zuzugreifen. In deinem Code hast ja auch noch das globale $php verwendet.

2. PHP_SELF sollte man ebenfalls vermeiden
Das wusste ich nicht, werde mal Googeln, warum das schlechter als dein SCRIPT_NAME sein soll.

3. Das Script in eine Datei schreiben ist ebenfalls unnötig
Das war ein wirklich nützlicher Tipp. Eval kannte ich auch von JavaScript, wusste aber nicht, dass man da bei PHP ganze Scripts übergeben kann. Ich dachte immer, da gehen nur einzeilige Kommandos.
3. Ein Parse-Error bekommst du unabhängig von der Plattform.
Stimmt, aber ich hatte beispielsweise kürzlich das Problem, dass ein Script in der Entwicklung einwandfrei lief, aber auf dem Server führte die Funktion htmlentities($myVal, ENT_IGNORE, "UTF-8") zu einem Fehler, weil die Konstante ENT_IGNORE dort nicht bekannt war. ein einfaches echo ENT_IGNORE im Testscript zeigte den Unterschied.

Grüße, Rainer
 
Werbung:
Hallo Nookie,

Wenn wir grad von Sicherheit reden:
XSS und evtl. LFI möglich. Wobei die XSS hier wahrscheinlich nichts bringt.

Keine Ahnung, was du mir da sagen willst. Ich nehme den Parameter gamename und schaue nach, ob es ein Spiel mit dem Namen (Dateiname als Referenz) gibt. Wenn ja, dann verarbeite ich die als XML abgelegten Daten, wenn nein, dann gibt es eine Fehlermeldung.

Ich wüsste nicht, wie das jemand ausnutzen sollte,
Grüße, Rainer
PHP:
    function ImportXmlFile() {
         $gameName    = (isset($_REQUEST['gamename'])) ? strtolower($_REQUEST['gamename']) : '';
        $xmlFilePath = "./games/$gameName.xml";

        if ($gameName == '') {
            echo "Kein Spielename als Parameter [gamename] angegeben";
            return(false);
        }
       
        if (! file_exists ($xmlFilePath)) {
            echo "Datei $xmlFilePath existiert nicht";
            return(false);
        }      
        return(simplexml_load_file($xmlFilePath));
    }
 
Klar, wenn ich es vorher nicht getestet habe.
Nö, wo steht bei mir global???
Die Variable $php ist doch oben im Header vor main definiert und daher global verfügbar, daher kannst sie ja auch mit echo $php im HTML ausgeben. Hast sie nur nicht meiner Namenskonvention folgen lassen und g_sPhp genannt und übergibst sie als Parameter an main. Ok, es ist definitiv sauberer, ich werde es in Zukubft analog machen und für Konstante auch mit define verwenden.

Grüße, Rainer
 
Werbung:
Das sind globale Variablen:

global $g_sPhpScript, $g_sTmpDir;

sagt ja schon das global aus
 
Das sind globale Variablen:
global $g_sPhpScript, $g_sTmpDir;
sagt ja schon das global aus
OK, ich finde, das ist Ansichtssache. Laut http://php.net/manual/de/language.variables.scope.php sind im Header definierte Variable in dieser Datei global nutzbar, für mich also global. Will ich sie auch innerhalb einer Funktion nutzen, dann muss ich sie dort explizit mittels global kenntlich machen. Du stehst auf dem Standpunkt, eine in meinen Augen globale Variable wird erst global, wenn ich sie auch innerhalb einer eingebunden Funktion nutze.
Grüße, Rainer
 
Werbung:
Zurück
Oben