In Dateien schreiben
Eingetragen von kev52 (423)
am 12.09.2008 - 17:45 Uhr in
am 12.09.2008 - 17:45 Uhr in
Ich versuche gerade Daten aus einem Node in eine txt Datei zu schreiben, ein Problem hab ich dabei aber, nämlich wie genau muss die Pfadangabe aussehen, damit das funktioniert? Ich habe die normale http URL genommen, aber die scheint nicht zu funktionieren.
- Anmelden oder Registrieren um Kommentare zu schreiben
Zitat: aus einem Node in
am 12.09.2008 - 22:23 Uhr
aus einem Node in eine txt Datei zu schreiben
Erklaere bitte wie Du das machst.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
der Code sieht wie folgt
am 12.09.2008 - 22:36 Uhr
der Code sieht wie folgt aus. Leider funktioniert das so nicht wirklich!
<?php
function test_service_xml($arr)
{
foreach($arr as $key=>$value)
{
$$key = $value;
}
//validate node
node_validate($arr);
if ($errors = form_get_errors()) {
return services_error(implode("\n", $errors));
}
$node = node_submit($arr);
$node->field_xml_url = $xml; // URL: http://www.my-site.de/files/id.xml
$filecontent = stripslashes($captions);
$filehandle = fopen($node->field_xml_url, "w+");
if(!fwrite($filehandle, $filecontent))
{
return services_error("ERROR: Kann die Datei nicht speichern.");
}
@fclose($filehandle);
node_save($node);
db_query("UPDATE {content_type_test} SET field_xml_url = '%s' WHERE nid = %d", $node->field_xml_url, $node->nid);
return $success;
}
?>
Du kannst, wenn deine
am 12.09.2008 - 22:48 Uhr
Du kannst, wenn deine PHP-Konfiguraton es zulässt (was sie nicht sollte), in PHP eine URL benutzen um eine Datei zu Lesen zu öffnen. Das funzt, weil man relativ einfach im Hintergrund schauen kann, ob der Dateiname eine URL ist und kann entsprechend an den Zielserver ein GET senden.
Das sollte aber nicht darüber hinweg täsuchen, dass ein Webserver keine Festplatte ist, auf die man schreiben kann (auch wenn es ein Kommando PUT und Erweiterungen wie WebDAV gibt, ist aber ein anderes Thema).
Wenn du mit PHP eine Datei schreiben willst, musst du diese über einen im lokalen Dateisystem gültigen relativen oder absoluten Pfad ansprechen.
Sonst könnte ja ein jeder auf die Idee kommen auf jedermanns Webserver seinen Krempel abzuladen...
--
Webseiter
wie kann ich das
am 12.09.2008 - 23:03 Uhr
wie kann ich das realisieren? also wie bekomme ich den entsprechenden pfad?
Dort liegt der Hase.
am 12.09.2008 - 23:12 Uhr
ERROR: Kann die Datei nicht speichern.
Dort liegt der Hase. Naja, wusstest Du ja bereits.
Packe eine PHP Datei, beispielsweise "phpinfo.php" mit
<?php
phpinfo();
?>
in das Rootverzeichnis Deiner Drupalinstallation und rufe diese Datei im Browser auf. Dann suche Dir in dem was der Browser anzeigt den Serverpfad oder den Pfad zu der aufgerufenen Datei.
Das Schreiben in die Datei funktioniert nicht weil sie nicht gefunden wird weil der der Pfad nicht stimmt. Der Pfad ist Root_Deiner_Drupalinstallation/Ordner/Datei_zum_Schreiben.txt
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Das Zauberwort ist
am 12.09.2008 - 23:17 Uhr
Das Zauberwort ist DOCUMENT_ROOT : http://www.php.net/manual/de/reserved.variables.server.php
--
Webseiter
$DOCUMENT_ROOT
am 12.09.2008 - 23:37 Uhr
Es gibt Serverkonfigurationen das kann man $DOCUMENT_ROOT nicht verwenden weil die Variable nicht den korrekten Pfad enthaelt. Da ist es gut zu wissen wie man $DOCUMENT_ROOT einfacherweise pruefen kann.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Unterschiede können
am 13.09.2008 - 01:11 Uhr
Unterschiede können auftreten, wenn a) irgendein Depp den Wert überschreibt (ist ja leider keine Konstante) oder b) ein lustiger Geselle lustige Webserverkonfigs einsetzt.
Grundsätzlich ist der Weg über die globalen vordefinierten Variablen in PHP aber allen anderen Lösungen vorzuziehen, weil er in sich SAUBER ist. Ich kann doch nicht im ersten Schritt jemandem ernsthaft raten, mit hartkodierten Pfaden um sich zu werfen. Das ist Foobar allererster Kajüte.
PHP ist für sich genommen schon gruselig genug. Da sollte man als Progger wenigstens das Beste draus machen. ;-)
--
Webseiter
vielen dank für die
am 13.09.2008 - 09:25 Uhr
vielen dank für die Hinweise, hoffentlich klappt's ;o)