myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   PHP Fehler nach Umzug (https://mygully.com/showthread.php?t=2177390)

kinderriegel159 05.12.10 14:36

PHP Fehler nach Umzug
 
Hallo,
google hilft mir auch nicht mehr weiter und ich hoffe ihr könnt mir bei folgendem Problem helfen:

ich habe mir eine kleine Website gebastelt die auch so funktioniert wie sie soll. Sie liegt momentan noch bei funpic. Ich habe mir nun aber einen vServer gemietet. Darauf läuft apache2. Wenn ich jetzt die Seite auf diesen kopiere bekomme ich beim einloggen immer die Fehlermeldungen:
Code:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/ftp_upload/index.php:13) in /var/www/ftp_upload/geschuetzt/login_pruefen.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at /var/www/ftp_upload/index.php:13) in /var/www/ftp_upload/geschuetzt/login_pruefen.php on line 22

An den entsprechenen Stellen in login_pruefen.php sollen einfach nur 2 cookies gesetzt werden und in index.php wird an der Stelle ein Bild eingebunden.

Ich hoffe ihr könnt mir helfen und ich habe euch alle nötigen Informationen gegeben.

nichdiemama 05.12.10 15:20

kommst Du an den alten Server noch ran oder kennst einfach so die php version, die dort gelaufen ist ?
hlrt sich danach an als wärst Du jetzt auf einer neueren php version oder in der php.ini jetzt ist etwas deaktiviert, das es vorher nicht war.

ein anderer grund können auch zugriffsrechte auf einer datei sein, die du evtl. innerhalb der index.php versuchst zu benutzen. greifst Du auf eine Datei zu also lesen schreiben etc. ?

kinderriegel159 05.12.10 15:41

Ja ich komm an den alten Server noch ran hier mal ein Aufruf von phpinfo() auf dem alten Server:
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]
und hier vom neuen:
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

index.php selber greift auf keine Datei zu außer die die sie includen soll. In dem Fall die login_pruefen.php greift auf eine Textdatei wobei ich für die Datei testweise mal CHMOD 777 gesetzt habe.

Xalir 05.12.10 19:14

Die Fehlermeldung besagt, dass Du schon die Headerdaten abgesendet hast und nun versuchst weitere hinzuzufügen.

Warum es auf dem einen Server klappt und auf dem anderen nicht, kann daran liegen, das entweder der Apache bereits einen Handler hat womit er die Daten sendet (was aber eher unwahrscheinlich ist) oder Du einen Fehler im S***** hast und die Header z.B. in der index.php bereits abgesendet hast und nun in der login...php den Header um die Cookie-Einträge zu erweitern versuchst.

kinderriegel159 05.12.10 19:31

Ja die Header werden schon in index.php gesendet soweit ich das erkennen kann aber auf dem neuen Server sind ja exakt die gleichen Dateien wie auf dem Alten. Hast du oder jemand anders eine Lösung dafür oder muss ich jetzt das ganze Loginskript umbauen?

Xalir 05.12.10 19:43

Sende die Headerdaten ab, nachdem Du aus dem Aufruf zur Deiner login_pruefen.php zurückkommst. Das sollte das Problem lösen.

kinderriegel159 05.12.10 19:49

Sorry wenn ich mich gerade ein bisschen blöd anstelle aber wie sende ich die Header daten denn am Ende ab? Hier mal meine index.php:

PHP-Code:

<?php session_start(); ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Index</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<!-- Seitenkopf -->
<img id="kopf" src="images/Webablage.png" onclick="http://revolutionfight.re*****pic.de/"/>
<!-- Seitenkopf dem sein Ende -->



<div id="menue" align="center">
<table border="0" align="center" height="top">
<tr><td>
<a href="index.php?page=home.php"><img src="images/button_home2.png" alt="Home" border="0" width="95%" height="32%"/></a>
</td><td><a href="index.php?page=Download.php"><img src="images/button_downloads2.png" alt="Downloads" border="0" width="95%" height="32%"/></a>
</td><td><a href="index.php?page=geschuetzt/upload.php"><img src="images/button_upload.png" alt="Upload" border="0" width="95%" height="32%"/>
</td><td><a href="index.php?page=geschuetzt/login.php"><img src="images/button_geschuetzter_bereich2.png" alt='Geschuetzter Bereich' border="0" width="95%" height="32%"/></a></td></tr>
</table>

</div>
<!-- menü ende -->

<div id="loginbox">
<?php
//wenn eingeloggt, ausloggen button anzeigen
if($_COOKIE['login']=="XXXXX")
{
     
$username $_COOKIE['username'];
     echo (
'<br><br>Hallo, '.$username.'.');
     echo(
'<form action="index.php?page=geschuetzt/logout.php" method="POST"><input type="submit" value="Ausloggen"></form>'); 
}else{
     include(
'geschuetzt/login.php');
}

?>
</div>



<!-- Seiteninhalt -->
<div id="inhalt">
<?php

//wenn ?page nicht gesetzt include home.php sonst include ?page
$_page $_GET['page'];

if (
$_page==""){ 
    include(
"home.php"); 
    } else {
    echo 
'';
    include (
$_page);
    echo 
'';
    }
    

?>
</div>
<div id="copyright">
<p>&copy; by Alexander Hurtado</p>
</div>
<!-- seiteninhalt ende -->
</body>
</html>

Ich hoffe du kannst mir damit weiter helfen.

Xalir 05.12.10 20:24

Überlege mal selbst, wie Du das machen kannst. Ein Webserver gibt immer zu allererst den HTTP-Header aus. In dem Header stehen unter anderem die Cookies, die der Browser setzen soll.

Danach gibt er das eigentliche HTML-Dokument aus. Du sendest jedoch schon die Header, danach ein Teil des HTML-Dokuments und versuchst mit Deiner login-Routine, weitere Header zu setzen, was aber nicht geht.

Das heißt, alles was Du im HTTP-Header hinzufügen willst, muss an den Anfang. Und erst danach kommt das HTML-Dokument.

kinderriegel159 05.12.10 20:33

Ok dann bin ich jetzt genau so weit wie vorher. Ichd achte es gibt irgendeinen Trick das zu umgehen oder so. Ich werde das ganze dann wohl anders lösen müssen. Naja trotzdem danke.

urga 05.12.10 23:24

das wird zu 95% an dem error_reporting von php liegen. der neue server verhält sich anders als der neue.
probier mal als _erste_ php-anweisung:
Code:

error_reporting (22519); // <- der wert vom alten server lt. phpinfo()
// oder
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_WARNING);
// oder
error_reporting(E_ALL & ~E_NOTICE);
// oder kombinationen

siehe auch [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

Xalir 05.12.10 23:25

Das dürfte aber sein Problem nicht lösen, dann wird die Fehlermeldung unterdrückt, aber das Cookie dennoch nicht gesendet?

kinderriegel159 06.12.10 16:32

Also erstmal danke für deinen Hilfeversuch aber Xalir hat Recht. Der Fehler wird nur unterdrückt und Cookies werden trotzdem nicht gesetzt. Ich hab auch alle möglichen Kombinationen der Befehle ausprobiert.

kinderriegel159 06.12.10 17:15

So habs jetzt geschafft. :) Ich hab jetzt einfach die Seiten auf denen cookies gesetzt werden alleine aufgerufen und nicht über die index.php included. Jetzt werden vorher keine Header mehr gesendet und die Cookies werden ordnungsgemäß gesetzt.

Danke nochmal an alle, die mir geholfen haben.
Von mir aus kann jetzt hier geschlossen werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.