[Funktion] fopen failed to open stream - lokal, ohne http... ??

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Funktion] fopen failed to open stream - lokal, ohne http... ??

    Hallo ,
    meine Frage ist, warum gibt fopen hier die übliche Fehlermeldung

    "Warning: fopen(http://127.0.0.1/wordpress/wp-conten...ts/g_posts.log) [function.fopen]: failed to open stream: HTTP wrapper does not support writeable connections in..." usw. aus,

    obwohl ich (siehe unten) keine http Verbindung abfrage UND auch lokal, also auf dem Server bleibe? In der folge wird natürlich auch fread(): rewind(): ftruncate(): usw. alles abgelehnt (not valid).

    Der Witz ist, dass das Script schon seit Jahren problemlos läuft (es handelt sich um einen Teil zur Verarbietung des Inputs einer Kleinanzeigenbank ), es nun aber (wir bauen um auf WordPress, läuft aber parallel) lokal Probleme macht. Leider war ich nicht der gwiefte Programmierer, sondern muss selbst ohne viel Wissen um php einpflegen.

    register_globals und auch allow_url_fopen (brauche ich nicht) sind On, die entspr. Dateien zum öffnen und schreiben ebenfalls vorhanden. Warum wrapper does not support writeable connections?

    Hier der Teil der die Fehler wirft:

    PHP-Code:
     //*Function: counts Post +1, returns new post # 

     
    function get_post_number($f)
     {
          
    $countfile fopen($f,"r+"); // ($f,"x+") ergibt dasselbe..
         
    $num fread($countfile,1024);
         
    $num $num 1;
         
    rewind($countfile);
         
    ftruncate($countfile,1024);
         
    fwrite($countfile,$num);
         
    fclose($countfile);
         return 
    $num;
     } 

    ps.: bitte nicht fragen was $f ist, das finde ich nirgens sonst im script.
    pps. das script ist nicht lang und schreibt erstmal nur post Daten in .post dateien zum nachträglichen bearbeiten.

    Jede Hilfe ist willkommen!
    Zuletzt geändert von Shunty; 12.06.2008, 21:10.

  • #2
    ps.: bitte nicht fragen was $f ist, das finde ich nirgens sonst im script.
    Dürfte aber entscheidend sein was da drinsteht!
    Also schau mal nach
    PHP-Code:
    //und als erste PHP Code Zeile noch
    ini_set('display.errors','1');
    error_reporting(E_ALL);
    function 
    get_post_number($f)
     {
          
    var_dump($f);
          exit;
          
    $countfile fopen($f,"r+"); // ($f,"x+") ergibt dasselbe..
         
    $num fread($countfile,1024);
         
    $num $num 1;
         
    rewind($countfile);
         
    ftruncate($countfile,1024);
         
    fwrite($countfile,$num);
         
    fclose($countfile);
         return 
    $num;
     } 
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Japp. Ich wette, daß eine Pfadangabe, die bisher entweder leer war oder einen absoluten Pfad beinhaltete, durch irgendeine Änderung plötzlch den Web-Pfad enthält... $f wirds lösen.

      Kommentar


      • #4
        aha, ja, wie da rankomme sorry, das wusste ich bislang nicht.
        Also da steht nun:

        string(75) "http://127.0.0.1/wordpress/wp-content/themes/dd/anz_php/~counts/g_posts.log"

        und das ist so auch völlig richtig, denn dort befindet sich der Ordner ~counts un die entspr. Datei g_posts.log, in der die Zahl (in diesem falle Anzahl der posts) um eins hoch gesetzt werden soll.

        Also toll, und nun? Warum macht fopen etc. det nicht ??

        Kommentar


        • #5
          Das ist kein Datei- sondern ein Webpfad. Du mußt einen Dateipfad draus machen.

          Kommentar


          • #6
            shit. Ah ok, sehe da ist eine dir anweisung so:
            $mDirPath = "http://127.0.0.1/wordpress/wp-content/themes/dd/anz_php";

            da habe ich die einfach mal geleert so:
            $mDirPath = "";

            Ergebnis:
            fopen(/~counts/g_posts.log) [function.fopen]: failed to open stream: No such file or directory in...

            an derselben Stelle wo $countfile = fopen($f,"r+"); usw.

            Mhm,
            der Pfad wird später noch für
            $postnum = get_post_number($mDirPath."/~counts/$countfilename"); // get post no.
            und
            $newentry = fopen($mDirPath."/~entries/$entryname","w");

            gebraucht. Wie sich das nun auswirkt... keine Ahnung. Was mich nur verblüfft ist nun das es auf dem Webserver so seit Jahren läuft, und nun auf einmal nicht, gibts doch nicht. ??

            .. momenti, werde den Pfad noch was ausprobieren... ... ...

            Yeaii! Für alle Wordpresser: so einen Pfad vom root aus anlegen, also:
            wp-content/themes/dd/anz_php
            oder
            wp-content/themes/theme/ usw.

            Danke Euch! Wenns mal wieder klingelt, lass ichs wieder scheppern.
            Hier die (noch) Page um die es ging:
            www.dorfdisco.de
            Zuletzt geändert von Shunty; 13.06.2008, 00:54.

            Kommentar


            • #7
              Yeaii! Für alle Wordpresser: so einen Pfad vom root aus anlegen, also:
              wp-content/themes/dd/anz_php
              Das ist kein Pfad vom Root aus, sondern einer vom Verzeichnis aus wo die PHP Datei drin liegt. Root Pfade beginnen in Unix Umgebungen immer mit /. Imho ist das was du als Pfad geschrieben hast gleichwertig zu ./wp-content/themes/dd/anz_php.
              Wenn du einen absoluten Pfad im Dateisystem angeben willst, dann kann dir die PHP Var $_SERVER weiterhelfen
              PHP-Code:
              $fopen($_SERVER['DOCUMENT_ROOT'].'/wp-content/themes/dd/anz_php/deine.php','r'); 
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Aha, ok, werds mir merken, danke!

                Renne aber gleich gegen die nächste Wand. Beim auslesen der oben gespeicherten .posts in Adminbereich (zum gucken, liegt woanders, genauer gesagt als Plugin im Wpress), erhalte ich folgende Fehlermeldung:

                PHP-Code:
                $oDirPath $_SERVER['DOCUMENT_ROOT']."/wordpress/wp-content/themes/.../...";
                var_dump($odirPath); 
                var_dump Ausgabe: NULL. Also nichts gesetzt , oder wieder nur falscher Pfad (obwohl der eigentlich hinhaut...)?

                Danach noch ein paar nette "Undefined index: e_action in...." und "Warning: fopen(/~entries/) [function.fopen]: failed to open stream ..." etc. Hier zeigt sich bei fopen, dass der Pfad oben zumindest stimmt...

                Kommentar


                • #9
                  PHP achtet bei Variablennamen auf Groß- und Kleinschreibung!

                  Kommentar


                  • #10
                    uhh natürlich ok, also nochmal:
                    var_dump($oDirPath); =
                    string(60) "E:/xampp/xampp/htdocs/wordpress/wp-content/themes/dd/anz_php"

                    korrekter Pfad, dennoch jene fehlermeldungen.."Undefined index: e_action in...." und "Warning: fopen(/~entries/) etc..
                    Zuletzt geändert von Shunty; 13.06.2008, 13:53.

                    Kommentar


                    • #11
                      Die "undefined index"e kommen vom error_reporting(E_ALL), die spielen erstmal keine große Rolle, die zu beheben kann dann ganz am Ende kommen. Die Warnings sind wichtger, beim fopen() mußt du halt schauen was er öffnen will und wo die entsprechende Angabe herkommt.

                      Kommentar


                      • #12
                        korrekter Pfad, dennoch jene fehlermeldungen.."Undefined index: e_action in...." und "Warning: fopen(/~entries/) etc..
                        Hat wohl nix mit der von dir gezeigten Codezeile zu tun. Such in deinem Quellcode mal die Zeile, die in der Fehlermeldung genannt wird und poste den Ausschnitt mal hier ins Forum (Zeile +- 10 Zeilen)
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13

                          $oDirPath = string(60) usw., stimmt schon

                          $current_of_entries = NULL - aha! - aber.. , die gibts, mhm...

                          //-> Error


                          PHP-Code:

                          // include Function "Dir_File()"
                          include ($_SERVER['DOCUMENT_ROOT']."/wordpress/wp-content/
                          .../FUNC_Dir_File.inc.php"
                          ); 

                          function 
                          Show_Entry()
                          {
                                  global 
                          $oDirPath$current_of_entries// Vars werden global
                                  
                                   
                          $fileopen fopen($oDirPath."/~entries/$current_of_entries","r"); 
                          //Aktuelles file wird geoeffnet  -> Warning: fopen(/~entries/)  
                                  
                                  
                          $mOutput .= '<table border="0" cellpadding="3" cellspacing="0">';
                          //Tabellenkopf -> Notice: Undefined variable: mOutput
                                  
                                   
                          while($line fgets($fileopen,1024))
                          //Zerlegt jede Zeile anhand des Trennzeichens in ein array. wert0
                           
                          des arrays wird  variablenname und bekommt wert1 als inhalt zugeordnet -> 
                          Warningfgets(): supplied argument is not a valid stream resource 

                                   
                          {
                                      
                          $array_split explode("|~|",$line);
                                      
                          $v1 strrevsubstr( (strrev($array_split[0])),3) );
                                      
                          $v2 $array_split[1]; // war mit htmlentities
                                      
                                      
                          if(strlen($v2)>65)
                                      {
                                      
                          $mOutput .= '<tr> 
                          und

                          PHP-Code:
                          // Bei "Enable": Schreibt Datensatz in die db und verschiebt nach Ordner "~archive"
                          if ($_POST['e_action'] == "Enable"// -> Notice: Undefined index: e_action in E:\....

                          // Bei "Delete": Verschiebt nach Ordner "~trash"
                          if ($_POST['e_action'] == "Delete")  // ->Notice: Undefined index: e_action in E:\ 
                          Zuletzt geändert von Shunty; 13.06.2008, 14:23.

                          Kommentar


                          • #14
                            1. Bitte umbrechen, sodaß kein horizontaler Scrollbalken aufkommt
                            2. Testausgaben von oDirPath und current_of_entries machen

                            Kommentar


                            • #15
                              $oDirPath und $current_of_entries sind entweder gar nicht definiert oder leer. Dazu braucht man noch nicht mal Testausgaben, das sieht man ja schon an der Fehlermeldung -> fopen(/entries/).

                              Kommentar

                              Lädt...
                              X