Computerhilfen.de Logo
Forum
Tipps
News

PHP: fwrite / fopen gibt ** Netiquette! ** aus

n kurzen Titel dafür zu finden ist schwer. Ich weiß ja nicht mal, wie das Problem überhaupt zu benennen ist...

Also ich hab für ne Grundschule ja ne Website erstellt und saß am Wochenende an einer Art "CMS".

Nun hab ich erfolgreich die Seite "Neue Seite erstellen" hinzugefügt, aber die "Neue Seite" funktioniert nicht. Zumindest nicht auf dem Webserver, in XAMPP geht alles wunderbar..

Der Inhalt der Seite wird im Browser in eine Textdatei eingegeben. Anschließend wird die Datei beschrieben:


Inhalt im Textfeld:

<#!?php include("MAIN_header.php") !?#>

<div id="Inhalt">

<h1>ÜBERSCHRIFT</h1>

Text der Seite


<#!?php include("MAIN_bottom.php") !?#>


Seitenerstellung:

<?php

if(
$_POST[&#39;submit&#39;])
{

$dateiname $_POST[&#39;kategorie&#39;].$_POST[&#39;filename&#39;];
$open fopen(&#39;../&#39;.$dateiname, &#39;w&#39;);

$inhalt str_replace(&#39;<#!?php&#39;, &#39;<?php&#39;, $_POST[&#39;inhalt&#39;]);
$inhalt str_replace(&#39;!?#>&#39;, &#39;?>
', $inhalt);
$inhalt = stripslashes($inhalt);

fwrite($open, $inhalt);
chmod('../'.$dateiname, 0777);

if($_POST['umleiten']==true)
{
echo '<meta http-equiv="refresh" content="0; URL=sitemap.php?id='.session_id().'&site='.$dateiname.'">';
}

}

?>


Soweit ist ja alles noch schön. Aber nun ist auf dem Webserver anscheinend irgendetwas schief gelaufen:

http://stadtschule-michelstadt.com/mitteilungen_dateiname.php

Merkwürdig ist nun, dass wenn ich die "kaputte" Datei per FTP runterlade, auf dem Webserver lösche und dann von meiner Festplatte wieder hochlade (immer noch die "kaputte" Datei !), dann geht alles ?!?

Muss ich da erst irgendeinen Socket öffnen oder sonstwas? Ich hab keine Ahnung, warum der solche Fehlermeldungen ausgibt.

Achja, der Anbieter ist http://www.all-inclusive-webspace.de ...

Antworten zu PHP: fwrite / fopen gibt ** Netiquette! ** aus:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Ok, hab jetzt mal ein wenig gegooglet und anscheinend haben die Dateien verschiedene Benutzer (ne, "anscheinend" am besten durchstreichen..)

Zitat
Warning: main(): SAFE MODE Restriction in effect. The script whose uid is 30 is not allowed to access ./MAIN_header.php owned by uid 839 in /srv/www/htdocs/web118/html/mitteilungen_dateiname.php on line 1

Hab mich dann mal an chown rangewagt, aber ich weiß nicht, wie ich das einsetzen soll, weil ja nur vom Superuser der Besitzer geändert werden kann.

Ich muss doch auf UID 839 wechseln und die Datei hab noch UID 30... Aber wenn ich das so im Script eingeb:

chmod('../'.$dateiname, 0777);
chown('../'.$dateiname, '839');

dann kommt das:

Zitat
Warning: chown(): Unable to find uid for 839 in /srv/www/htdocs/web118/html/update/neueseite.php on line 26

Also wie "werd" ich Superuser oder wie kann man von vornerein sagen, was fürn Besitzer die erstellte Datei hat?[/font]

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

Hast du mal nach dem Erstellen der Datei auf dem Server gecheckt, ob die Nutzerrechte auch tatsächlich richtig gesetzt worden sind?

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Also sind sie ja anscheinend nicht, ich hab aber keine Ahnung, wie ich das checken soll, per FTP kann ich ja nur die "Dateiattribute" bzw. Zugriffsrechte anschaun und mit chown ja nur ändern (als Superuser, was ja nicht geht)...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Naja chmod im FTP-Programm ist ja alles, was du für die Überprüfung einer erfolgreichen chmod-Aktion in PHP brauchst.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Also ich hab mich grad nochmal schlau gemacht, weil ich das Thema Safe Mode für mich auch noch nicht so erschlossen hatte.

Sieht schlecht aus mit der Variante, wie du sie vorhast. Du kannst keine Dateirechte aus dem Skript heraus setzen, ebenso wenig wie den Besitzer.

2 Möglichkeiten:
(1) Du lädsts die Datei per FTP hoch (kann auch leer sein). Das gibt dann allerdings Schwierigkeiten, wenn du eine neue Datei per Skript erstellen lassen willst. Dann kommt Möglichkeit (2) zum Tragen:
(2) Du erledigst diverse Dateisystem-Operationen per FTP, und das im Skript. PHP bietet dafür eine Reihe von Funktionen --> check the Manual ;)

Das Thema ist übrigens hier auch mal diskutiert worden.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
... also per ftp_put (oder sowas in PHP) die Datei an die entsprechende Stelle packen und dann "normal" beschreiben?

Mal schaun, um genau zu sein, "programmiert" hab ich noch nie was, ich "probier" nur bis es klappt *g* ;D

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Mal schaun, um genau zu sein, "programmiert" hab ich noch nie was, ich "probier" nur bis es klappt *g* ;D


Dann versuch's doch mal mit "richtigem" Programmieren ;)

Das mit dem FTP-Zeugs hab ich übrigens selber auch noch nicht probiert, kann dir also nur schwer dabei helfen. Aber es sollte doch genügend Beispiele im Netz geben. Eine gute Anlaufstelle ist auch immer wieder php.net, weil dort User kleine Scriptlets zu den einzelnen Funktionen posten.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Ok, habs jetzt richtig hingekriegt, bzw "programmiert" ;)

Hier vielleicht noch der Code, wens interessiert (wer weiß, in welchen Google-Seiten der Threath hier auftaucht um anderen VIELE, VIELE Stunden "Programmierarbeit" zu ersparen :P;D

<?php
if(
$_POST[&#39;submit&#39;])
{

$dateiname $_POST[&#39;kategorie&#39;].$_POST[&#39;filename&#39;];
@unlink(&#39;../&#39;.$dateiname);

$conn_id ftp_connect("stadtschule-michelstadt.com"); 
$login ftp_login($conn_id"XXXXX""XXXXX");
ftp_put($conn_id, &#39;html/&#39;.$dateiname, &#39;leerdatei.php&#39;, FTP_BINARY);
ftp_site($conn_id, &#39;CHMOD 0777 html/&#39;.$dateiname);
ftp_close($conn_id);

$open fopen(&#39;../&#39;.$dateiname, &#39;wb+&#39;);

$inhalt str_replace(&#39;<#!?php&#39;, &#39;<?php&#39;, $_POST[&#39;inhalt&#39;]);
$inhalt str_replace(&#39;!?#>&#39;, &#39;?>
', $inhalt);
$inhalt = stripslashes($inhalt);

fwrite($open, $inhalt);

}

?>


_________________________

Achja, vielleicht sollt ich dazu sagen, "leerdatei.php" liegt im selben Verzeichnis wie das Skript und ist leer, also 0 KB groß. Mal schnell im Windows-Explorer erstelle "Neu-Textdokument-leerdatei.php" und hochgeladen. Geht wie gesagt ja nicht ohne diesen kleinen Umweg.
« Letzte Änderung: 05.06.06, 13:36:09 von Der olle Schwoebel »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Na das ging ja fix :)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Hey, is immerhin Pfingstmontag (also frei) und ich kann solange nicht schlafen, bis ich solche Probleme gelöst hab ;D

Außerdem hab ich mich ja schon allein wegen der Pro-Version von HomePH Design mit den FTP-Funktionen von PHP beschäftigt. Naja. Die Pro Version is zwar nie fertig geworden, is nur ne Beta, aber die Skripte hab ich noch..

Apropo, da müsst ich auch mal wieder die Website aktualisieren. Wollt die Pro-Arbeit ja aufgeben und doch als OSS veröffentlichen..
« Letzte Änderung: 05.06.06, 13:41:55 von Der olle Schwoebel »

« ServeronlinetestImpressum »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!