DS209+II und PHP

Status
Für weitere Antworten geschlossen.

VITALIUS

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Ich hab kleines problem, bei mir funktionieren alle html seiten, aber bei viele php seiten kommt fehler.
z.b http://vitalius.draydns.de/
Warning: Cannot modify header information - headers already sent by (output started at /volume1/web/index.php:7) in /volume1/web/index.php on line 102
aber gleiche php seite bei 1und1 server www.olgashaarmonie.de hat keine fehler, oder http://vitalius.draydns.de/12.php
Warning: Cannot modify header information - headers already sent by (output started at /volume1/web/12.php:8) in /volume1/web/12.php on line 93
und
Warning: Cannot modify header information - headers already sent by (output started at /volume1/web/12.php:8) in /volume1/web/12.php on line 170
bei www.olgashaarmonie.de/12.php ist alles ok.

Bei kauf DS209+II hab ich gedacht das DS209+II php unterstützt oder ist das falsch?
 
Zuletzt bearbeitet von einem Moderator:

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Der Fehler kommst wenn Du per header() funktion den header der HTML Seite verändern willst, aber schon vorher Zeichen gesendet wurden (und damit der header eben auch schon). Prinzipiell ist hier kein Unterscheid on die Seite auf der DS läuft oder eben auf einem Server von 1&1. Das Prinzip ist bei beiden das gleiche. Ich würde vorschlagen du debugst das Script mal....

gruss
dude
 

VITALIUS

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
na ja, ich sage doch gleiche php seite funk ohne problem bei 1und1 mit gleiche script und bei DS komt fehler.
 

VITALIUS

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
DS kennt nicht:
PHP:
header("Content-Type: text/html; charset=utf-8");
wie muss ich das verstehen?
 

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Die DS kennt das schon. Wahrscheinlich ist der Webserver bei 1&1 einfach anders konfiguriert. Wie gesagt. Der header kann nur gesendet werden wenn vorher KEIN ANDERES Zeichen gesendet wurde.

gruss
dude
 

VITALIUS

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Und mit diesem script kommt er überhaupt nicht klar:
PHP:
<?php
$startzeit = explode(" ", microtime());
$startzeit = $startzeit[0]+$startzeit[1];
?>

<?php
$wert=$_POST["klan"];
if($wert=='') exit;

$igroki = f_igroki_oline($wert);



foreach($igroki as $igrok) {		
	$igrok_info = f_igrok_info($igrok["id"]);
	$igrok = array_merge($igrok, $igrok_info);
		
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++				
	echo	'<div class="conttbl"><script>pprs('.$igrok["id"].',"'.$igrok["name"].'","'.$igrok["klan"].'",'.$igrok["level"].');</script> - '.$igrok["status"].' - '.$igrok["stazion"].' - '.$igrok["koordinate"].' - ';
				    
	for($i = 1; $i <= (int)$igrok["gold"]; $i++){
					echo '<img src="http://img.starcombats.ru/others/mech_gold.gif" width="15"/>';	
	}
	echo '</div><hr>'."\n";
//---------------------------------------------------------------------------------------------------------------
}





function f_igrok_info($igrok_id){
	//echo "<br>".$igrok_id;
	$igrok_info = array();
	$gold = 0;
	$User_Url = 'http://foggystation.starcombats.ru/info/info.php?'.$igrok_id;
	$content = implode("", file($User_Url));
	$nutz_inhalt_start = '<table width="352" height="96" border="0" cellpadding="0" style="color:#000000">';
	$nutz_inhalt_ende = '<td class="status_right"><img ';
	$nutz_inhalt_start_pos = strpos($content, $nutz_inhalt_start);
	$nutz_inhalt_end_pos = strpos($content, $nutz_inhalt_ende);

	if(strpos($content, $nutz_inhalt_start)){
		$content  = substr($content, $nutz_inhalt_start_pos, $nutz_inhalt_end_pos-$nutz_inhalt_start_pos);
		//echo $content;
		$suche_start = 0;

		$stazion_start_str = '<td align="center">';
		$stazion_ende_str = '</td>';
		$stazion_start = strpos($content, $stazion_start_str, $suche_start);
		$stazion_ende = strpos($content, $stazion_ende_str, $stazion_start);
		$stazion = trim(substr($content, $stazion_start + strlen($stazion_start_str), $stazion_ende-$stazion_start-strlen($stazion_start_str)));
		$suche_start=$stazion_ende+strlen($stazion_ende_str);		
			
		$koordinate_start_str = '<td align="center" style="padding-bottom:18">??????????:';
		$koordinate_ende_str = '</td>';		
		$koordinate_start = strpos($content, $koordinate_start_str, $suche_start);
		$koordinate_ende = strpos($content, $koordinate_ende_str, $koordinate_start);
		$koordinate = trim(substr($content, $koordinate_start + strlen($koordinate_start_str), $koordinate_ende-$koordinate_start-strlen($koordinate_start_str)));		
		$suche_start=$koordinate_ende+strlen($koordinate_ende_str);				
		
		$kampf_status_start_str = '<br>???????? ????????? <a href="';
		$kampf_status_ende_str = '" target=_blank>? ???</a>';
		$kampf_status_start = strpos($koordinate, $kampf_status_start_str);
		$kampf_status_ende = strpos($koordinate, $kampf_status_ende_str);
		if($kampf_status_start){
			$kampf_status = trim(substr($koordinate, $kampf_status_start + strlen($kampf_status_start_str), $kampf_status_ende-$kampf_status_start-strlen($kampf_status_start_str)));		
			$koordinate = trim(substr($koordinate, 0, $kampf_status_start)).' <a href="'.$kampf_status.'" target=_blank>? ???</a>';					
		}
		
		while(!$offset)	{			
			$gold_start_str = '<img src="http://img.starcombats.ru/others/mech_gold.gif';
			$gold_ende_str = '" alt="';
			$gold_start = strpos($content, $gold_start_str, $suche_start);
			if($gold_start) {
				$gold_ende = strpos($content, $gold_ende_str, $gold_start);
				$gold = $gold + 1;
				$suche_start=$gold_ende+strlen($gold_ende_str);
				//$gold_start_str = ''; $gold_ende_str = '';		
			} else {
				$offset = 1;
			}
		}								
		//echo $stazion.'   -   '.$koordinate.'    -     '.$gold;
		$igrok_info = array('stazion' => $stazion, 'koordinate' => $koordinate, 'kampf_status' => $kampf_status, 'gold' => $gold);

	}	
	return $igrok_info;
}

function f_igroki_oline($wert){
	$igroki = array();
	$User_Url = "http://www.starcombats.ru/top/clans.php?id=".$wert;
	$content = implode("", file($User_Url));
	$nutz_inhalt_start = '<table class="conttbl" rules="cols">';
	$nutz_inhalt_ende = '<img src="http://img.starcombats.ru/clanpages/botr.jpg" width="471" height="32"/>';
	$nutz_inhalt_start_pos = strpos($content, $nutz_inhalt_start);
	$nutz_inhalt_end_pos = strpos($content, $nutz_inhalt_ende);

	if(strpos($content, $nutz_inhalt_start)){
			$content  = substr($content, $nutz_inhalt_start_pos, $nutz_inhalt_end_pos-$nutz_inhalt_start_pos);

		$suche_start = 0;
		$offset = false;
		while(!$offset)	{		
			$id_start_str = '<td align="left"><script>pprs(';
			$id_ende_str = ',"';
			$id_start = strpos($content, $id_start_str, $suche_start);
			$id_ende = strpos($content, $id_ende_str, $id_start);
			$id = trim(substr($content, $id_start + strlen($id_start_str), $id_ende-$id_start-strlen($id_start_str)));
			$suche_start=$id_ende+strlen($id_ende_str);
			
			$name_start_str = '';
			$name_ende_str = '","';
			$name_start = $id_ende; 
			$name_ende = strpos($content, $name_ende_str, $name_start);
			$name = trim(substr($content, $name_start + strlen($id_ende_str), $name_ende-$name_start-strlen($id_ende_str)));
			$suche_start=$name_ende+strlen($name_ende_str);
			
			$klan_start_str = '';
			$klan_ende_str = '",';
			$klan_start = $name_ende; 
			$klan_ende = strpos($content, $klan_ende_str, $suche_start);
			$klan = trim(substr($content, $klan_start + strlen($name_ende_str), $klan_ende-$klan_start-strlen($name_ende_str)));
			$suche_start=$klan_ende+strlen($klan_ende_str);
			
			$level_start_str = '';
			$level_ende_str = ');<';
			$level_start = $klan_ende; 
			$level_ende = strpos($content, $level_ende_str, $suche_start);
			$level = trim(substr($content, $level_start + strlen($klan_ende_str), $level_ende-$level_start-strlen($klan_ende_str)));
			$suche_start=$level_ende+strlen($level_ende_str);
							
			$status_start_str = '<td align="center" width="20%"><font color="';
			$status_ende_str = '</font></td>';
			$status_start = strpos($content, $status_start_str, $suche_start);
			$status_ende = strpos($content, $status_ende_str, $status_start);
			$status = trim(substr($content, $status_start + 9 + strlen($status_start_str), $status_ende-$status_start-strlen($status_start_str) - 9));
			$suche_start=$status_ende+strlen($status_ende_str);			
			
			if($_POST["quelle"]=='online'){	
				if($status=='online'){
					//echo	'<hr>'.$id . '   -   ' .$name.'    -    '.$klan.'    -    '.$status.'<hr>';			
					$igrok = array('id' => $id, 'name' => $name, 'klan' => $klan, 'status' => $status, 'level' => $level);
					array_push($igroki,$igrok);
				}
			}	else {
				$igrok = array('id' => $id, 'name' => $name, 'klan' => $klan, 'status' => $status, 'level' => $level);
				array_push($igroki,$igrok);
			}
						
			if(strlen($content) < ($suche_start + 280)) $offset=true;			
		}
	}
	return $igroki;
}
?>
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ich hab kleines problem, bei mir funktionieren alle html seiten, aber bei viele php seiten kommt fehler.
z.b http://vitalius.draydns.de/
Warning: Cannot modify header information - headers already sent by (output started at /volume1/web/index.php:7) in /volume1/web/index.php on line 102
aber gleiche php seite bei 1und1 server www.olgashaarmonie.de hat keine fehler, oder http://vitalius.draydns.de/12.php
Warning: Cannot modify header information - headers already sent by (output started at /volume1/web/12.php:8) in /volume1/web/12.php on line 93
und
Warning: Cannot modify header information - headers already sent by (output started at /volume1/web/12.php:8) in /volume1/web/12.php on line 170
bei www.olgashaarmonie.de/12.php ist alles ok.

Bei kauf DS209+II hab ich gedacht das DS209+II php unterstützt oder ist das falsch?

Ich hab da keine Fehler gesehen ... nebenbei sehen wir es nicht ganz so gerne, wenn Links zu gewerblichen Seiten hier im Forum drin sind. Ich entferne diese also mal eben.

Itari
 

VITALIUS

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Wegen links wusste nicht, entschuldigung.;)
Fehler war
PHP:
header("Content-Type: text/html; charset=utf-8");
, aber nur bei DS.
Mit zweite script kommt er überhaupt nicht klar:mad:
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
PHP:
<?php 
$startzeit = explode(" ", microtime()); 
$startzeit = $startzeit[0]+$startzeit[1]; 
?> 
 Das ist eine Leerzeile in HTML und das ist damit eine Zeichenausgabe vor dem header()
<?php
du hast eine Leerzeile im Code
 

VITALIUS

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
nexte problem wenn ich in ordner web, noch eine ordner erstelle z.b test und dann in diese ordner z.b test.php seite kopiere von ordner web funktioniert sie nicht, aber in ordner web funktioniert die test.php warum?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
nexte problem wenn ich in ordner web, noch eine ordner erstelle z.b test und dann in diese ordner z.b test.php seite kopiere von ordner web funktioniert sie nicht, aber in ordner web funktioniert die test.php warum?
Unter welchem User hast du den Unterordner test erstellt? Wahrscheinlich stimmen die Rechte nicht und der Webserver kann nicht lesend auf diese Datei zugreifen
 

VITALIUS

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Unter welchem User hast du den Unterordner test erstellt? Wahrscheinlich stimmen die Rechte nicht und der Webserver kann nicht lesend auf diese Datei zugreifen
Unter User Admin, wenn ich eigenschaften von ordner test anschaue da ist alles erlaubt lesen/schreiben/ausführen.
 

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Mal mal bitte ein:

Rich (BBCode):
ls -al /volume1/web/test

gruss
dude
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Unter User Admin, wenn ich eigenschaften von ordner test anschaue da ist alles erlaubt lesen/schreiben/ausführen.
So als Tipp: Ich würde die Rechte für den Webroot direkt auf der Konsole setzen (telnet und root Zugriff mit gleichem Passwort wie admin).
Wichtig ist v.a., dass der User nobody, unter dem der Apache läuft, mindestens lesend auf den Ordner und die Datei zugreifen darf.
Zum Testen könntest du im DSM auch die Rechte auf Lesen/Ausführen/Schreiben (für alle).
Ich persönlich finde es aber besser die Rechte nicht soweit zu fassen. Dazu habe ich einen Benutzer, der die Webseiten bearbeitet (User test) und damit Schreibrechte in web haben muss.
Code:
chown -R test:nobody /volume1/web
chmod -R 0750 /volume1/web
Es gibt bestimmte Webserverprogramme die ebenfalls Schreibrechte auf gewisse Verzeichnisse und Dateien in web wollen (z.B. Wordpress oder Joomla). In diesen Fällen kann man auch chmod -R 0770 /volume1/web machen (wenn man faul ist ;) ) oder die Schreibrechte explizit nur in diesen Verzeichnissen setzen, wo die jeweilige Webserveranwendung auch schreiben können muss.
 

VITALIUS

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
ich hab DS nur 3 tage, so viel weis ich noch nicht :)
Aber ich versuche weiter zu forschen :cool:
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
ich hab DS nur 3 tage, so viel weis ich noch nicht :)
Aber ich versuche weiter zu forschen :cool:
Lies dir mal das folgende durch (auch die weiteren Links auf der Seite): http://www.synology-wiki.de/index.php/Die_Kommandozeile
Dann musst du dich wie im Wiki beschrieben als root anmelden und mal die Rechte deines Testverzeichnisses prüfen. Gib dazu mal den Code so ein wie ihn thedude geschrieben hat und poste die Ausgabe hier. Dann schauen wir weiter.

Gruss

tobi
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat