Usergästebuch Backup funktion!

Begonnen von Atze, 24 Dezember 2005, 16:56:10

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Atze

Hi,
hab die Backup Funktion aktiviert,
leider bekomme ich den Fehler:

FPDF error: Can't open image file: /tmp/pdfgifhvsw2D.png

Ordner tmp ist da!


Gruß

Happy X-Mas @ ALL ;-)
Fahr mal das Becks hoch!

jubilee

Hallo !
Ist der Ordner auch beschreibbar (chmod 777) und liegt im Webroot ?

MfG
jubile

hakanffm

ich habe auch diesen fehler FPDF error: Can't open image file: /tmp/pdfgifhvsw2D.png
aber bei modules/userguest habe ich gekuckt da ist kein ordner im namen tmp was muss ich machen?

Gruss

jubilee

Hallo !
@hakanffm: Die Lösung bzw. was Du einmal probieren solltest, habe ich doch schon hier
http://www.pragmamx.org/forum-topic-14814.0.html
geschrieben.
Wie wäre es, wenn Du meine Antworten auch einmal lesen und bachten würdest.
Sonst spare ich mir die Zeit und antworte auf Deine Fragen nicht mehr.
MfG
jubilee

hakanffm

Sorry jubilee habs nicht gesehen

danke dir

Atze

Hi,
hab auch im Webroot kein Glück.
ZitatErstelle mal direkt im Webroot (nicht Portalroot) einen Ordner tmp und gebe dem chmod 777.
Vielleicht klappt das so ...
Klappt nicht!!

1. Woran kann es noch hacken??
2. Wo kann ich das tmp Verzeichniss/Pfad umstellen???

Danke

Gruß
Fahr mal das Becks hoch!

jubilee

hmmm ....
Du hast den Ordner auch wirklich im Webroot angelegt ?
Es ist damit nicht ein Unterverzeichnis gemeint in dem evt das Portal liegt sondern das obere Verzeichnis im Webspace und der Ordner muss Schreibrechte haben
Bei welcher Art Bild taucht das Problem denn auf ?
Hast Du dort eigene Smilies hinzugefügt ?
Angelegt wird das Temporäre Bild bei der Umwandlung des Bildformates.
Einstellen kann man das wohl nur in der php.ini.

Ich versuche das einmal nachzustellen.
MfG
jubilee

Atze

Hi,
denk schon.
Hier liegt er:

/home/www/dps311/html/tmp
und
hier geht pragmamx  los:
/home/www/dps311/html/modules/...

Das ist schon korrekt, oder?

Das taucht wahrscheinlich bei den Avatars auf oder beim html einträgen,
genau kann ich das nicht sagen.

Gruß
Fahr mal das Becks hoch!

FrankP

So wie ich das sehe, nutzt das Script das /tmp des Servers und nicht das /home/www/dps311/html/tmp

Das /tmp des Server steht aus Sicherheitsgründen dafür nicht zur Verfügung. Hierfür haben wir eigentlich andere temporäre Verzeichnisse, wie z.b. das phptmp oberhalb des Webroots vorgesehen. Die meisten Scripte nutzen dies automatisch. Da temporäre Verzeichnisse auf einem Server grundsätzlich ein Sicherheitsproblem darstellen und (auch deshalb ) von Server zu Server unterschiedlich konfiguriert sind, ist es unabdingbar, dass ein Script diesbezüglich anpassbar ist, wenn es nicht automatisch ein temporäres Verzeichnis innerhalb des erlaubten open_basedir nutzt.

Ergo müsste in dem Modul, das diesen Fehler produziert, das temporäre Verzeichnis angegeben werden können, das es für die Uploads nutzen soll, wenn es dies nicht von alleine tut.
Webhosting für pragmaMx www.abundus.de
Wer Butter will soll Butter kaufen, statt stundenlang auf die Milch einzudreschen und sich zu wundern, warum nur Käse rauskommt.

jubilee

Hmm ...
Das ist ein systemabhängiges Problem.
Ich habe mal die index.php des Usergästebuches umgeschrieben.
Alle die den Fehler mit dem Backup des Usergstebuches haben, tauschen einmal die modules/UserGuest/index.php gegen die hier angehängte aus.
Falls damit Zugriffsprobleme auftreten sollten, muss der Ordner UserGuest auf chmod 777 gesetzt werden.

MfG
jubilee


[gelöscht durch Administrator]

jubilee

Hallo !
ZitatErgo müsste in dem Modul, das diesen Fehler produziert, das temporäre Verzeichnis angegeben werden können, das es für die Uploads nutzen soll, wenn es dies nicht von alleine tut.
So schlau bin ich auch.
Leider nutzt die PHp-Funktion tempnam() aber nicht immer den ihr mitgegebenen Verzeichnisnamen, sondern wird von Systemeinstellungen überschrieben. Diese sind auch noch in Linux und Windows unterschiedlich.
Das ist ein generelles Konfigurationsproblem des Servers und nicht des Scriptes.
Ich habe die besagte Funktion gegen etwas selbsgebasteltes umgebaut.
So sollte es dann zumindest davon keine Probleme mehr geben.

MfG
jubilee

adonis

Hallo,

so, mit der neuen index.php und den Schreibrechten klappt das bei yellohost wunderbar.

Danke, Peter
die SUCHE hier im Forum existiert und funktioniert auch ...

Dana

Zitat von: jubilee am 26 Dezember 2005, 21:43:16
Hallo !
ZitatErgo müsste in dem Modul, das diesen Fehler produziert, das temporäre Verzeichnis angegeben werden können, das es für die Uploads nutzen soll, wenn es dies nicht von alleine tut.
So schlau bin ich auch.
Leider nutzt die PHp-Funktion tempnam() aber nicht immer den ihr mitgegebenen Verzeichnisnamen, sondern wird von Systemeinstellungen überschrieben. Diese sind auch noch in Linux und Windows unterschiedlich.
Das ist ein generelles Konfigurationsproblem des Servers und nicht des Scriptes.
Ich habe die besagte Funktion gegen etwas selbsgebasteltes umgebaut.
So sollte es dann zumindest davon keine Probleme mehr geben.

MfG
jubilee


Das ist kein generelles Serverproblem.
Wenn die phpinfo den eingetragenen Pfad zur tmp Datei auslesen kann, kann das auch eine Funktion die Du benutzt. Bei vielen Scripten kann man im Adminbereich den zu verwendenen Pfad zum Temp-Verzeichnis angeben. Sie es doch einfach als Hinweis zur Verbesserung, das man einen solchen Pfad eingeben kann  ;)

Gruss
Dana

jubilee

#13
Hallo !
ZitatWenn die phpinfo den eingetragenen Pfad zur tmp Datei auslesen kann, kann das auch eine Funktion die Du benutzt. Bei vielen Scripten kann man im Adminbereich den zu verwendenen Pfad zum Temp-Verzeichnis angeben. Sie es doch einfach als Hinweis zur Verbesserung, das man einen solchen Pfad eingeben kann
Du scheinst nicht recht zu verstehen. Sicher habe ich einen Pfad angegeben.
Dieser wird jedoch je nach Serverkonfiguration durch die Env-Werte des Servers überschrieben.
Wenn das aber der Fall ist, muss das Verzeichnis auch beschreibbar und vorhanden sein. Dies ist aber Sache der Serveradministators und anscheinend ist dieses Verzeichnis welches in der Serverkonfig angegeben ist NICHT erreichbar oder beschreibbar. Das Verzeichnis welches ich angegeben hatte ist vorhanden und beschreibbar, wird aufgrund der Serverkonfiguration aber nicht benutzt weil in der Tempnam()-Funktion der ubergebene Wert für den Speicherplatz automatisch durch Systemvariablen überschrieben wird. Also ist dies sehrwohl ein Serverproblem weil meine Vorgabe funktioniert, wenn kein anderes Temp-Verzeichnis in der Serverkonfig angegeben ist. Wenn aber ein anderes Verzeichnis angegeben ist, das muss es von der Konfiguration her auch verfügbar sein. Das liegt aber ausserhalb meiner Möglichkeiten dies sicherzustellen. Dafür ist der Serverbetreiber zuständig.
In diesem Fall ist also das Problem, das das (vom Serveradmin) angegebene Temp-Verzeichnis eben nicht erreichbar/beschreibbar ist. Da kann ich mit meinem Script den Pfad 100x auswerten nur hilft es nichts ...
MfG
jubilee

Dana

Zitat von: jubilee am 27 Dezember 2005, 14:00:19
Hallo !
ZitatWenn die phpinfo den eingetragenen Pfad zur tmp Datei auslesen kann, kann das auch eine Funktion die Du benutzt. Bei vielen Scripten kann man im Adminbereich den zu verwendenen Pfad zum Temp-Verzeichnis angeben. Sie es doch einfach als Hinweis zur Verbesserung, das man einen solchen Pfad eingeben kann
Du scheinst nicht recht zu verstehen. Sicher habe ich einen Pfad angegeben.

Dann entschuldige ich mich vielmals, ich habe in dem Script nirgendwo ein Plätzchen gesehen, wo ich im Adminbereich den Pfad zum tmp-Verzeichniss eingeben kann. Werde ich mal auf die Suche gehen, damit ich das beim nächsten Mal direkt anweden kann.

ZitatDieser wird jedoch je nach Serverkonfiguration durch die Env-Werte des Servers überschrieben.
Wieso gibt man ihn dann ein, wenn er doch wieder überschrieben wird. Sorry, aber das entzieht sich meiner Verständnis. XTCommerce, als Beispiel, lässt diesen Pfad doch auch nicht wieder überschreiben, also muss es doch Möglichkeiten geben.

ZitatWenn das aber der Fall ist, muss das Verzeichnis auch beschreibbar und vorhanden sein. Dies ist aber Sache der Serveradministators und anscheinend ist dieses Verzeichnis welches in der Serverkonfig angegeben ist NICHT erreichbar oder beschreibbar.

Als Serveradministrator sage ich Dir gerne nocheinmal, das das entsprechende Verzeichnis "phptmp" vorhanden war und ist und mit den Rechten 777 ausgestattet ist.

Die Frage ist, was liest Du aus, denn das Servertmp wurde in der Fehlermeldung genannt (/tmp) - dieses ist aber nicht das eingetragene Usertmp. Nochmal:
Usertmp-Verzeichnis  =  /home/www/dps311/phptmp
Servertmp-Verzeichnis = /tmp

Wenn der User im Adminbereich oder in einer der Konfigurationsdateien sein Temp-Verzeichnis angeben könnte, würde man dieses Problem, nämlich das das falsche tmp-Verzeichnis ausgelesen wird,  umgehen. Nichts anderes habe ich vorgeschlagen, Deine Antwort :
ZitatDu scheinst nicht recht zu verstehen. Sicher habe ich einen Pfad angegeben.
scheint mir aber sagen zu wollen, das dies schon möglich ist. Sagst Du mir wo?


Liebe Grüße
Dana

jubilee

#15
Hallo !
ZitatDann entschuldige ich mich vielmals, ich habe in dem Script nirgendwo ein Plätzchen gesehen, wo ich im Adminbereich den Pfad zum tmp-Verzeichniss eingeben kann
Das ist auch nicht notwendig, da die Funktion Tempnam() um die es geht, ihr Ergebnis entweder im Funktionsuafruf übergebenen Verzeichnis (in diesem Fall das Scriptverzeichnis selbst) oder im Verzeichnis, welches von den Environment-Variablen der Serverbetriebssystemes vorgegeben ist, speichert.

Zitatscheint mir aber sagen zu wollen, das dies schon möglich ist. Sagst Du mir wo?
Der Pfad wird in der PHP-Funktion tempnam() übergeben. Diese erstellt einen zufälligen Dateinamen und speichert diesen in dem im Funktionsaufruf übergebenen Verzeichnis, wenn nicht Serverseitig ein anderes Verzeichnis als Temporär-Verzeichnis angegeben ist, oder das Verzeichnis nicht existiert
(Wenn Du dich jetzt auf das in diesem Thread angehängte Script beziehst, da habe ich die Funktion gegen etwas selbstgestricktes umgebaut. Die Funktion findet sich alo nur in den originalquellen)

ZitatDie Frage ist, was liest Du aus, denn das Servertmp wurde in der Fehlermeldung genannt (/tmp) - dieses ist aber nicht das eingetragene Usertmp.
Nochmal. Ich lese gar nichts aus. Die übergeben Funktionsvariablen werden von den ENV-Variablen des Servers überschrieben.
Dazu der Auzug aus der Funktionsbeschreibung:
ZitatCreates a file with a unique filename in the specified directory. If the directory does not exist, tempnam() may generate a file in the system's temporary directory, and return the name of that.

Prior to PHP 4.0.6, the behaviour of the tempnam() function was system dependent. On Windows the TMP environment variable will override the dir parameter, on Linux the TMPDIR environment variable has precedence, while SVR4 will always use your dir parameter if the directory it points to exists. Consult your system documentation on the tempnam(3) function if in doubt.
Returns the new temporary filename, or the FALSE string on failure.


ZitatWenn der User im Adminbereich oder in einer der Konfigurationsdateien sein Temp-Verzeichnis angeben könnte, würde man dieses Problem, nämlich das das falsche tmp-Verzeichnis ausgelesen wird,  umgehen
Nur schreibt die besagte Funktion das File ja leider nicht in das Verzeichnis welches angegeben wurde. Ob ich das jetzt fest im Funktionsaufruf eingebe, oder ob der User das im Admin-Menü eingibt, wird da sicher kein Unterschied machen. Das Verzechnis, welches ich angegeben habe existiert (es ist das Verzeichnis in dem auch der Rest der Scripte liegt, und sollte ja auch beschreibbar sein), trotzdem scheint aber das System das File liegen in /tmp anlegen zu wollen.

ZitatWieso gibt man ihn dann ein, wenn er doch wieder überschrieben wird. Sorry, aber das entzieht sich meiner Verständnis.
Ich habe die Scriptsprache (PHP) nicht entwickelt. Ich nutze sie nur. Warum das so in dieser Funktion gelöst wurde, kann ich nicht beurteilen.

Das einzige andere Problem ausser einer Serverkonfiguration könnte nur sein, das der übergebene Pfad absolut zu root angegeben werden muss. Dem wiedersprechen aber 5 verschiedene Server auf denen ich den Pfad relativ eingegeben habe und bei denen es fehlerfrei funktioniert (Sowohl Linux- als auch Windows-Server). Und dies sind nur meine Testserver die ich ausprobiert habe.

MfG
jubilee

Dana

#16
Hallo jubilee,

ZitatDas einzige andere Problem ausser einer Serverkonfiguration könnte nur sein, das der übergebene Pfad absolut zu root angegeben werden muss. Dem wiedersprechen aber 5 verschiedene Server auf denen ich den Pfad relativ eingegeben habe und bei denen es fehlerfrei funktioniert (Sowohl Linux- als auch Windows-Server). Und dies sind nur meine Testserver die ich ausprobiert habe.

Wenn alle Server gleich wären, würden die Anwender ja keine Probleme mehr haben - wie langweilig ;)

Deshalb ja meine Anregung:
Lass den Anwender seinen Pfad zum entsprechenden tmp-Verzeichnis doch im Adminmenu eingeben. Damit kommst Du der Individualität nur ein Stück entgegen.

Nichts für ungut - allen noch ein paar schöne Tage im aktuellen Jahr, lange währt es ja nicht mehr.

Gruessle

Dana



Übrigens,
das ganze ist noch komplizierter aufgebaut, als es hier den Anschein hat. Es finden nämlich Unterscheidungen zwischen tmp Verzeichnis für Sessions und für Dateiuploads im System statt. Bei Interesse lege ich Dir das gerne mal offen.  :)

jubilee

Hallo !
ZitatLass den Anwender seinen Pfad zum entsprechenden tmp-Verzeichnis doch im Adminmenu eingeben. Damit kommst Du der Individualität nur ein Stück entgegen.
Wobei der Pfad zum phptemp auch nicht geholfen hätte. da hier keine Session o.ä. von php gespeichert werden sollte, sondern ein temporäres File, so hätte man auf das Verzeichnis auch vom Webbserver aus zugreifen müssen. Wahrschelich ist das aber nicht möglich. Die meisten Konfigurationen die mir geläufig sind, erlauben dem Webserver nicht den Zugriff auf das phptemp. Sollte das bei euren Servern anders sein ?

MfG
jubilee

Dana

Ja und Nein,

Du hast insofern Recht, das im phptmp keine Sessions gespeichert werden sollen, sehr wohl aber könnten, da es auch nur "temporäre Dateien" sind.

Wie ist es bei uns, ich versuch es mal zu erklären:


  • Es gibt das /tmp Verzeichnis - hier können Dateien abgespeichert werden, jedoch nicht kopiert oder ausgeführt werden. Einige Scripte speichern Ihre Session darin, wenn man es nicht anders eingeben kann. Das Verzeichnis wird regelmäßig und automatisch gesäubert
  • Dann das /home/www/sess_tmp/ Verzeichnis - hier gilt das gleiche wie für das /tmp Verzeichnis, hat nur eine andere Struktur und die Sessions bleiben länger erhalten.
  • Zu guter Letzt das /home/www/dps311/phptmp Verzeichnis. Hier können Dateien abgelegt und kopiert werden, innerhalb der Verzeichnissturktur /home/www/dps311/

Netterweise kommt demnächst noch ein Verzeichniss "sess" dazu, in welchem die Sessions des Benutzers abgelegt werden, so das diese aus /home/www/ herauskommen. Dort bleiben die Sessions solange erhalten, bis der Benutzer sie löscht.

Das liest sich alles ziemlich kompliziert, ist aber durchdacht, denn es erhöht die Sicherheit des Servers. Da wir ohne Safe_mode arbeiten ist dies relativ wichtig.

Zitatie meisten Konfigurationen die mir geläufig sind, erlauben dem Webserver nicht den Zugriff auf das phptemp. Sollte das bei euren Servern anders sein ?

Der Ordner liegt im Verzeichnis des Benutzers, der Benutzer kann selbstverständlich darauf zugreifen und direkt Dateien hochladen. Das ist einer der Gründe, warum wir nicht das /tmp Verzeichnis nutzen.
Der Webserver kann bedingt auf das Verzeichnis zugreifen - mit einer URL nicht - mit einem absoluten Pfad ist dies möglich.

Beantwortet das Deine Frage?

Gruessle
Dana


jubilee

ZitatBeantwortet das Deine Frage?

Ja, zum Teil schon. Den rest werde ich sowieso ausprobieren müssen.
Mal sehen wie sich die Funktion verhält, wenn versucht wird die Daten in das Verzeichnis zu schreiben.
MfG
jubilee