5907 HD Link zum aktuellen Bild

Hm… in dem Code kommt eigentlich gar kein * vor… Was steht denn in Zeile 13 der entsprechenden Datei?

Im Anhang sind definitiv funktionierende PHP-Dateien mit dem Code 1:1 kopiert. Du müsstest nur noch den Pfad jeweils korrigieren (falls es mit dem Windows-Editor nicht klappt, nehme z.B. notepad++; Variante 2 ist etwas zickig und will „UTF ohne BOM“ oder halt „ANSI“ als Codierung).

Download (ein einem ZIP-Archiv verpackt, am besten doppelklicken und die beiden Dateien erst einmal woanders hin kopieren):

Habe den Code jetzt 1:1 übernommen (den $Pfad in der 1 php Zeile habe ich geändert)… es sieht schon besser aus :smiley:

Die Seite sieht jetzt so aus:

Quelltext:
<html>
<head>
<title>PHP-Test</title>
</head>
<body>

Hier kommt das aktuelle Bild (als direkter, relativer Link). Diese Datei muss daher im gleichen Ordner sein, wie das Bild oder der Code in der letzten Zeile muss entsprechend ergänzt werden.
<br/ >
<br />

<img src=„variante1.php“>
</body>
</html>

Ich denke die IMG SRC stimmt noch nicht…
Was mache ich falsch? :confused:

Nichts wirklich :have a nice day: PHP schmeißt die neueste Datei in dem sondierten Ordner aus… überlege mal, welche das ist :grin:

Lösung: Warten oder zum Testen ein neues Bild hochladen. Oder die PHP nicht in den sondierten Ordner schieben.

Perfekt Danke für die super Hilfe! Funktioniert jetzt tadellos :slight_smile:

Werde es noch mit der 2. Variante ausprobieren, also das das Bild direkt ausgegeben wird und melde mich danach.

Danke nocheinmal an alle!

MfG

Hat sich erledigt! Variante 2 funktioniert.

Habe durch Google herausgefunden das nichts vor dem <php? Befehl stehen darf ;D

Danke nocheinmal allen!

Hallo,
da ihr mir schon vor 1,5 Jahren sehr geholfen habt, wollte ich euch nocheinmal um Hilfe bitten :slight_smile:

Es handelt sich um das gleiche Vorhaben bzw. Code.

Der Code wäre folgender:
<html>
<head>
</head>
<body>
<?php
$pfad = ‚/var/www/virtual/meine-domain.at/htdocs/webcam‘; // definiert die Variable $pfad, die wird verwendet, um PHP zu sagen, wo es die Bilder suchen soll
$bild = ‚‘; // eine leere Variable mit dem Namen bild wird angelegt
$dir = opendir ($pfad); // PHP wird der Ordner aus $pfad vorgesetzt
while (false !== ($file = readdir($dir))) { // PHP soll den ganzen Ordner durchackern (neu: Fehlerberücksichtigung)
if (!$bild || filemtime($bild)<filemtime("$pfad/$file")) // wenn die gerade abgearbeitete Datei jünger ist, als die zuletzt gemerkte …
$bild = „$pfad/$file“; } // … dann merke sie dir (diesmal mit $pfad davor) in $bild
// kein echo
if (!is_file($bild) || !is_readable($bild)) { // wenn Datei nicht existiert oder nicht lesbar ist
die(„File not found“); // breche ab, mit Fehlermeldung „File not found“
}
header(„Content-type: image/jpg“); // nun sagen wir dem Browser, dass er eine JPG-Datei gefunden hat :wink:
readfile($bild); // und nun gibt PHP einfach statt HTML oder so die JPG aus
?>
</body>
</html>

Leider bekomme ich jetzt diese Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/meine-domain.at/htdocs/webcam/aktuell1.php:5) in /var/www/virtual/meine-domain.at/htdocs/webcam/aktuell1.php on line 16

Könnten ihr mir weiterhelfen?
Beste Grüße

Die Informationen, die du mit header() sendest, können nicht in den Header gelegt werden, da der Header bereits gesendet wurde.

Wenn du den ganzen HTML Teil oben und unten einfach weg lässt, sollte es funktionieren. Wichtig: der PHP-Tag <?php muss wirklich als allererstes in der Datei stehen, kein Leerzeichen und eine Leerzeile.

Anmerkung: es macht wenig sinn, die Ausgabe so gestalten, wie du es getan hast. Wenn du den Header setzt, mach der HTML Teil überhaupt keinen Sinn mehr, weil der Browser ein Bild erwartet und kein HTML.

Guten Tag,
bis vor kurzem hat alles funktioniert. Also knapp 2 Jahre :slight_smile:
Leider funktioniert der php Code seit einiger Zeit nicht mehr… --> File not found

Den Code habe ich nicht verändert.

<?php
$pfad = ‚/var/www/virtual/meine-domain.at/htdocs/webcam‘; // definiert die Variable $pfad, die wird verwendet, um PHP zu sagen, wo es die Bilder suchen soll
$bild = ‚‘; // eine leere Variable mit dem Namen bild wird angelegt
$dir = opendir ($pfad); // PHP wird der Ordner aus $pfad vorgesetzt
while (false !== ($file = readdir($dir))) { // PHP soll den ganzen Ordner durchackern (neu: Fehlerberücksichtigung)
if (!$bild || filemtime($bild)<filemtime("$pfad/$file")) // wenn die gerade abgearbeitete Datei jünger ist, als die zuletzt gemerkte …
$bild = „$pfad/$file“; } // … dann merke sie dir (diesmal mit $pfad davor) in $bild
// kein echo
if (!is_file($bild) || !is_readable($bild)) { // wenn Datei nicht existiert oder nicht lesbar ist
die(„File not found“); // breche ab, mit Fehlermeldung „File not found“
}
header(„Content-type: image/jpg“); // nun sagen wir dem Browser, dass er eine JPG-Datei gefunden hat :wink:
readfile($bild); // und nun gibt PHP einfach statt HTML oder so die JPG aus
?>

Könnt ihr mir ev. wieder helfen an was es liegen könnte?

Beste Grüße und danke!

Die Fehlermeldung kommt aus der Zeile mit if (!is_file und !is_readable). Also vermute ich, dass entweder der durchsuchte Ordner leer ist und daher keine Bilder gefunden werden können, oder die Berechtigungen nicht stimmen und daher der Dateiinhalt nicht abgerufen werden kann.

Hast du per FTP oder so mal in den Ordner geguckt? Dateiberechtigungen der jpgs sollten 744 sein (oder 755;777 ist nicht zu empfehlen).

Sollte das nicht das Problem erklären, würde ich mal die Zeile // kein echo ersetzen durch: die($bild);
Das bricht den Code ab und schreibt dafür den Pfad von $bild hin. Den kann man sich mal im Hinblick auf Plausibilität angucken.

Grüße,

ACCakut

Guten Abend,
danke für deine Hilfe.

Ich habe jetzt die Berechtigungen im FTP Ordner kontrolliert. Die neue Bilder werden automatisch mit der Berechtigung 0640 vergeben.

Wie kann ich es einstellen das die Berechtigung automatisch auf 755 gesetzt wird?
Via Filezilla funktioniert es nur auf die Bestehenden Bilder… bei einem neuen Bild wird es automatisch auf 0640 gesetzt.

Beste Grüße und danke

Ändern auf 755 hilft? Oder 644? (zur Erklärung: Die Zahl setzt sich jeweils aus der Summe zusammen von 4 Lesen, 2 Schreiben, 1 Ausführen; also 6=read+write, ist hier quasi äquivalent zu 7, weil man die jpgs nicht ausführen muss; genau genommen sogar besser, weil sicherer; 755 war nur ein Reflex meinerseits; erste Zahl steht für den Besitzer der Datei, zweite für Gruppenmitglieder und dritte für andere)

Ändern könnte man das mit umask, glaube ich. Eher FTP-Server spezifisch…

Servus,
leider kann ich das nicht testen da ja das Script immer das aktuellste Bild auswählt und das automatisch 0640 gesetzt wird.

Ich habe das mit der Zeile die($bild) probiert.

Dann erscheint im Browser:
/var/www/virtual/meine-domain.at/htdocs/webcam/.