PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erneutes Problem nach Providerwechsel


phILIp
27.05.2006, 12:10:37
Hallo,
leider ist es nicht möglich hier den Code einzustellen, weil das zu umfangreich wäre. Wir haben den Provider gewechselt und da ich die meisten Scripts mit absoluten Serverangaben (z. B. /srv/www/etc.) laufen habe (anders wollten die nicht), musste ich einiges umstellen.
Die Scripts (ein Newsletter und eine Umfrage) werden ohne murren geladen, allerdings passiert dann beim klicken auf Menüpunkte oder Buttons einfach garnichts (bzw. sie wird beim Buttonklick wegen des $PHP_SELF ohne Änderungen neugeladen) ?-( .
Habs dann mit relativen Links, auf dem Server löschen und neu hochladen und Errorreporting probiert - keine Änderungen oder Auffälligkeiten...
Hat wer ne Idee, woran das liegen könnte?

Beim alten Provider hatte ich das Problem auch mit einer selbstprogrammierten Newsadministration - da hat sich das nach ein paar Tagen von selbst geklärt: Ohne Änderungen am Code gings auf einmal ?-) .

Grüße, Phil

Heinrich
27.05.2006, 20:21:34
Hi Phil,

die alten Griechinnen in Delphi und Didyma hatten wenigestens Dope, um seherische Fähigkeiten zu entwickeln.

Mit deiner Beschreibung ist es schwierig, was zu sagen. Welche klicks auf welche Links funktionieren denn nicht? Was ist an der PHP-Umgebung anders? Usw-usf?

phILIp
28.05.2006, 11:33:21
Ist mir klar, dass da viel Spekulation ist. Ich hatte einfach gehofft, dass jemand das Phänomen wiedererkennt und mir so weiterhelfen kann.

Zu den nicht funktionierenden Links (beim Newsletter-Script): Da sind Get-Infos angehängt aber die werden einfach nicht ausgeführt. Nix passiert. Bei Buttons (Pollscript) wird die Seite zwar neu geladen, aber die Post/Get Befehle werden einfach nicht ausgeführt. Ein paar Mal ist es vorgekommen, dass die Get-Informationen beim Poll-Script nicht an die Datei angehängt wurden, sondern an das Verzeichnis, also da kam nicht poll.php?xyz&abc sondern polldirectory/?xyz&abc raus - woraus natürlich eine Fehlermeldung resultierte. Ist aber auch nur sporadisch passiert.

PHP-Umgebung: Kann ich leider nix mehr zu sagen. Zum alten Provider hab ich keinen Kontakt mehr. Würde aber schätzen, dass der Neue eher up-to-date ist. Das Problem ist halt, dass alle andere Scripts problemlos laufen (Newsadmin., Counter, Bildergalerie etc). Und das Poll-/NL-Script sind jetzt auch nix so komplexes.
Besonders ärgerlich: Das Frontend des NL funktioniert einwandfrei, d.h. man kann ihn bestellen oder abbestellen - nur die Admin. geht nicht.

Grüße und Danke, Philip

vt1816
28.05.2006, 11:49:32
...
PHP-Umgebung: Kann ich leider nix mehr zu sagen.
...phpinfo() - Du kannst Dich aber an die PHP-Version Deines alten Providers erinnern - oder?

phILIp
28.05.2006, 12:02:06
Neuer Provider: PHP Version 4.3.3, alte müsste 4.3.10 oder so sein. Zumindest haben andere Clients beim alten Provider diese Version, ob das bei uns auch so war, kann ich nur vermuten - habe das gerade mal Google-Site-Suche nachgeschaut, erinnern kann ich mich nicht.

Grüße, Philip

vt1816
28.05.2006, 12:18:13
Neuer Provider: PHP Version 4.3.3, alte müsste 4.3.10 ...Dann wäre es ja ein Rückschritt und könnte die Probleme erklären ...

phILIp
28.05.2006, 12:22:30
Kann ich mir nicht vorstellen; die Scripts liefen mehrere Jahre beim alten Provider und der dürfte währenddessen auch upgedatet haben. D. h. die liefen bei dem auch mal mit kleineren Versionen. Und wiegsagt - das sind keine so komplexen Scripte, auch ohne außergewöhnliche Klassen (im Gegensatz zur Showit-Fotogalerie) - warum gerade bei denen?

Grüße, Philip

xabbuh
28.05.2006, 12:51:53
Vermutung: register_globals ist bei deinem neuen Provider deaktiviert und du verwendest nicht die superglobalen Arrays ($_GET, $_POST etc.).

phILIp
28.05.2006, 12:56:59
register globals ist tatsächlich nicht aktiviert und ich verwende keine Superglobalen. Da ich das aber bei keinem Script mache und ein Teil trotzdem einwandfrei lief, bin ich nicht davon augegangen, dass das das (yea :-) Problem ist. Werde ich trotzdem mal probieren.

Grüße, Philip

phILIp
30.05.2006, 11:20:55
So liebe Leute, dann doch mal das Poll-Script. Wie ist das nun mit der Umstellung auf Superglobale. Welche Variablen muss ich da umstellen?

<?php

include("/srv/www/www.leechrock.com/htdocs/..."); //von mir mal gekürzt
if (isset($_POST['write'])) {
if (isset($_POST['archive'])) {
$poll_contents = file($current_poll);
// How many total votes we have;
$total_votes = sizeof($poll_contents);
$my_answers = file($config);
if ($total_votes == 0) {
echo "<div align=center><h3>No votes in current poll! Nothing to archive.</h3></div>";
}
else {
$fp = fopen($archive_poll, "a");
$answers_file = file($config);
$current_question = $answers_file[0];
// Let's write down current question;
$size_question = strlen($current_question) + 1;
fputs($fp, chop($current_question) . "|", $size_question);

$size_answers = sizeof($my_answers) - 1;
$votes[$size_answers] = 0;
for ($current_number = 1; $current_number <= $size_answers; $current_number++) {
foreach ($poll_contents as $line) {
$line = chop($line);
$line_parts = explode("|", $line);
if ($line_parts[0] == $current_number) {
$votes[$current_number]++;
}
}
$percentage = $votes[$current_number]/$total_votes*100;
$graph_width = 2 * $votes[$current_number];
$archive_string = "<img src=tick.gif height=10 width=" . $graph_width . ">&nbsp;&nbsp;&nbsp;" . round($percentage, 2) . " %
&nbsp;&nbsp;&nbsp;" . chop($answers_file[$current_number]) . ": " . $votes[$current_number]/1 . " votes.<br>";
$size_string = strlen($archive_string);
fputs($fp, $archive_string, $size_string);
}
$total_votes_string = "Total votes: " . $total_votes;
$size_total_votes_string = strlen($total_votes_string);
fputs($fp, $total_votes_string, $size_total_votes_string);
// Separate different polls from each other;
fputs($fp, "\n", 1);
fclose($fp);
echo "<div align=center><h3>Current poll has been archived!</h3></div>";
}
}
// Let's clean the current poll file;
$poll_file = fopen($current_poll, "w");
ftruncate($poll_file, 0);
fclose($poll_file);

if ((strlen($question) != 0) && (strlen($answers) != 0)) {



// Write new question;
$fp = fopen($config, "w");
$string = stripslashes($question) . "\n" . trim(stripslashes($answers));
$string_size = strlen($string);
if (fputs($fp, $string, $string_size)) {
echo "<div align=center><h3>Config file successfully updated!</h3>";
}
fclose($fp);
}
}

if (isset($_POST['deletecurrent'])) {
if (isset($_POST['archive'])) {
$poll_contents = file($current_poll);
// How many total votes we have;
$total_votes = sizeof($poll_contents);
$my_answers = file($config);
if ($total_votes == 0) {
echo "<div align=center><h3>No votes in current poll! Nothing to archive.</h3></div>";
}
else {
$fp = fopen($archive_poll, "a");
$answers_file = file($config);
$current_question = $answers_file[0];
// Let's write down current question;
$size_question = strlen($current_question) + 1;
fputs($fp, chop($current_question) . "|", $size_question);

$size_answers = sizeof($my_answers) - 1;
$votes[$size_answers] = 0;
for ($current_number = 1; $current_number <= $size_answers; $current_number++) {
foreach ($poll_contents as $line) {
$line = chop($line);
$line_parts = explode("|", $line);
if ($line_parts[0] == $current_number) {
$votes[$current_number]++;
}
}
$percentage = $votes[$current_number]/$total_votes*100;
$graph_width = 2 * $votes[$current_number];
$archive_string = "<img src=tick.gif height=10 width=" . $graph_width . ">&nbsp;&nbsp;&nbsp;" . round($percentage, 2) . " %
&nbsp;&nbsp;&nbsp;" . chop($answers_file[$current_number]) . ": " . $votes[$current_number]/1 . " votes.<br>";
$size_string = strlen($archive_string);
fputs($fp, $archive_string, $size_string);
}
$total_votes_string = "Total votes: " . $total_votes;
$size_total_votes_string = strlen($total_votes_string);
fputs($fp, $total_votes_string, $size_total_votes_string);
// Separate different polls from each other;
fputs($fp, "\n", 1);
fclose($fp);
echo "<div align=center><h3>Current poll has been archived!</h3></div>";
}
}
// Let's clean the current poll file;
$poll_file = fopen($current_poll, "w");
if (ftruncate($poll_file, 0)) {
echo "<div align=center><h3>Current poll deleted!</h3></div>";
}
fclose($poll_file);

// Let's clean the current question file;
$config_file = fopen($config, "w");
if (ftruncate($config_file, 0)) {
echo "<div align=center><h3>Current question deleted!</h3></div>";
}
fclose($config_file);
}
?>
<div align="center">
<table width="100%" border="1" cellpadding="10" cellspacing="10">
<tr><td valign="top" width="60%" align="center">
<h2>Continue voting (new question):</h2>
<form name="setup" action="<? echo $PHP_SELF; ?>" method="post">
Question:<br><input type="text" name="question" size="45" value="Sample question: How much is your weight?"><br>
Answers (one per line):
<br><textarea name="answers" cols="40" rows="10">
Answer 1
Answer 2
Answer 3
</textarea><br>
<input type="checkbox" name="archive" value="on">Archive current poll<br><br>
<input type="submit" name="write" value="update">
</form></td>
<td valign="top" width="40%" align="center">
<h2>Stop voting:</h2>
<form name="deletecurrent" action="<? echo $PHP_SELF; ?>" method="post">
<input type="checkbox" name="archive" value="on">Save current poll<br><br>
<input type="submit" name="deletecurrent" value="update">
</form>
</td></tr></table>
</div>So wie ich das bisher habe gibts dann ne Fehlermeldung:
Warning: fopen(/srv/www/www.leechrock.com/htdocs/.../current_poll.txt): failed to open stream: // Links alle gekürzt
Permission denied in /srv/www/www.leechrock.com/htdocs/.../admin.php on line 47

Warning: ftruncate(): supplied argument is not a valid stream resource in /srv/www/www.leechrock.com/htdocs/.../admin.php on line 48

Warning: fclose(): supplied argument is not a valid stream resource in /srv/www/www.leechrock.com/htdocs/.../admin.php on line 49Die bezieht sich auf den folgenden Abschnitt// Let's clean the current poll file;

Grüße und Danke, Philip

phILIp
30.05.2006, 11:37:54
Ich denke, ich habe das Problem gelöst: Es sind keine CHMOD-Schreibrechte vergeben. Das Problem ist, dass ich das nicht selber machen kann und unser neuer Provider das bisher immer manuell macht (ein Bekannter, der eigentlich kein Webhosting macht, aber nen großen Server betreibt). Er hatte uns das mal eingestellt, abe ich habe die Dateien zwischenzeitlich wieder überschrieben.

Zu den Superglobalen habe ich auch meinen Gehirnschmalz angeworfen: Wenn ich das richtig verstanden habe, alle Variablen, die per POST verschickt werden im Script auch mit $_POST kodieren, right?

Grüße und Danke, Philip