Wie mit fopen/fwrite in Serververz. schreiben?

Hi!

Ich möchte Daten aus einer MySQL-Datenbank lesen und als CSV-Datei in einem Verzeichnis auf dem Server ablegen. Das macht aber erhebliche Probleme.

Arbeite ich mit folgenden php-Code

$Dateiname = „chronik.csv“;
$csv_datei = fopen($Dateiname, „w“);
$anzbystes = fwrite($csv_datei, $datensatz);
fclose($csv_datei);

bekomme ich eine Fehlermeldung „Operation not permitted“.

Problem: das php-Programm hat keine Zugriffsrechte auf die zu schreibende Datei bzw. für das Verzeichnis.

Also habe ich den Code abgeändert und ein „chmod“ eingefügt:

$Dateiname = „chronik.csv“;
chmod($Dateiname, 777);
$csv_datei = fopen($Dateiname, „w“);
$anzbystes = fwrite($csv_datei, $datensatz);
fclose($csv_datei);

Für die Zeile „chmod“ bekam ich eine Fehlermeldung: „Operation not permitted“.

Nun habe ich einen Tipp bekommen, wonach ich das php-Programm in einen ftp-Modus versetzen muss. Das sah dann so aus:

$FTPServer = „ftp.xyz.de“;
$FTPUser = „userid“;
$FTPPasswort = „userpw“;

$Dateiname = „chronik.csv“;
$Rechte = „777“;

$VerbindungsID = ftp_connect($FTPServer);
$LoginErgebnis = ftp_login($VerbindungsID, $FTPUser, $FTPPasswort);

if($VerbindungsID && $LoginErgebnis)
{
$Erfolg = ftp_site($VerbindungsID, "CHMOD „.$Rechte.“ ".$Dateiname);
}

$Dateiname = „chronik.csv“;
$csv_datei = fopen($Dateiname, „w“);
$anzbystes = fwrite($csv_datei, $datensatz);
fclose($csv_datei);

Folge: ftp_connect quittierte mit "„Operation not permitted“.

Wie zum Henker bekomme ich ein php-Programm dazu, eine Datei mit fopen und fwrite in ein Verzeichnis auf dem Server zu schreiben?

Grüße
Heinrich

Hallo

Problem: das php-Programm hat keine Zugriffsrechte auf die zu
schreibende Datei bzw. für das Verzeichnis.

Also habe ich den Code abgeändert und ein „chmod“ eingefügt:

soweit ich das sehen kann / weiß, mußt du beim Skript ansetzen und
dessen UID oder GID auf den Nutzer, der für den Server verwendet wird (Apache?) ändern, also

chown user\_xyz skript

Nun habe ich einen Tipp bekommen, wonach ich das php-Programm
in einen ftp-Modus versetzen muss. Das sah dann so aus:
Folge: ftp_connect quittierte mit "„Operation not permitted“.

äh, auf dem Rechner läuft ein FTP-Server?

bzw.:

andere Frage: der Server auf den du die Datei schreiben willst, ist das dergleiche, wie der, auf dem dein PHP-Programm läuft?

mfg TLF

$Dateiname = „chronik.csv“;
$csv_datei = fopen($Dateiname, „w“);
$anzbystes = fwrite($csv_datei, $datensatz);
fclose($csv_datei);

bekomme ich eine Fehlermeldung „Operation not permitted“.

Problem: das php-Programm hat keine Zugriffsrechte auf die zu
schreibende Datei bzw. für das Verzeichnis.

a) entweder sollst du da nicht hinschreiben duerfen od.
b) deinem ftp-account gehoert das verzeichnis, aber der php-prozess laeuft als anderer user

wenn a) such dir ein anderes verzeichnis :wink:
wenn b) geh mit deinem ftp-client auf den server. setze das verzeichnis, in das du schreiben willst auf 777 und die datei die du schreiben willst auf 666, falls sie existieren sollte andernfalls kannst du sie einfach loeschen.

Also habe ich den Code abgeändert und ein „chmod“ eingefügt:

$Dateiname = „chronik.csv“;
chmod($Dateiname, 777);
$csv_datei = fopen($Dateiname, „w“);
$anzbystes = fwrite($csv_datei, $datensatz);
fclose($csv_datei);

Für die Zeile „chmod“ bekam ich eine Fehlermeldung: „Operation not permitted“

wenn dem script die datei nicht gehoert, darf es auch nicht sagen dass jeder drauf zu greifen duerfe (dein nachbar befestigt ein schluesselbrett mit deinem hausschluessel an deiner tuer)