DS209+II und PHP

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

VITALIUS

Benutzer
Registriert
24. Jan. 2010
Beiträge
8
Reaktionspunkte
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:
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
 
na ja, ich sage doch gleiche php seite funk ohne problem bei 1und1 mit gleiche script und bei DS komt fehler.
 
DS kennt nicht:
PHP:
header("Content-Type: text/html; charset=utf-8");
wie muss ich das verstehen?
 
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
 
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;
}
?>
 
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
 
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:
 
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
 
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?
 
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
 
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.
 
Mal mal bitte ein:

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

gruss
dude
 
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.
 
ich hab DS nur 3 tage, so viel weis ich noch nicht :)
Aber ich versuche weiter zu forschen :cool:
 
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