Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Script soll jede Minute ein Webcam Bild per URL abrufen und auf Webserver ablegen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Script soll jede Minute ein Webcam Bild per URL abrufen und auf Webserver ablegen

    Hallo Leute und PHP Profis
    Wenn mir einer das passende Script schreibt oder liefern kann werde ich mich als Dank per PayPal erkenntlich zeigen!

    Ich suche ein PHP Script was per URL ein Bild von einer Webcam abruft, umbenennt, auf dem Server in einem Verzeichnis ablegt und bei jeden Aufruf des Script per Cronjob diese Bildatei überschreibt.
    Praktisch soll dann ein Webcam Bild mit dem Namen webcam_vogelhaus.jpg zum Beispiel in einem Ordner liegen.

    Danke für jede Hilfe die mir weiterhilft

  • #2
    Getest mit PHP:
    Code:
    PHP 8.0.13 (cli) (built: Nov 19 2021 06:34:49) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v4.0.13, Copyright (c) Zend Technologies
        with Zend OPcache v8.0.13, Copyright (c), by Zend Technologies

    PHP-Code:
    <?php

    $source 
    'https://www.php.de/images/misc/phpdelogo.png';
    $targetFile 'webcamvogelhausvorn.png';
    $targetPath __DIR__// Without leading /

    $opts = [
        
    'http' => [
            
    'method' => 'GET',
            
    'timeout' => 10,
        ],
        
    'ssl' => [
            
    'verify_peer'       => true,     // Set false for self sign certificate
            
    'verify_peer_name'  => true,     // Set false for self sign certificate
        
    ],
    ];

    $context stream_context_create($opts);
    $tmp = @file_get_contents($sourcefalse$context);

    // Throw error on failed download
    if (false === $tmp) {
        throw new 
    Exception('Cannot download source file!');    
    }

    // Throw error if target path is not writeable for php user
    if (!is_writable($targetPath)) {
        throw new 
    Exception('Cannot write target path. Permission denied?');
    }


    $targetFilename sprintf('%s/%s'$targetPath$targetFile);

    // If target file already exists, delete the file
    if (is_file($targetFile)) {    
        
    $result unlink($targetFile);
        if (
    false === $result) {
            throw new 
    Exception('Cannot delete existing file!');
        }  
    }

    // Write new target file
    $result file_put_contents($targetFilename$tmp);

    if (
    false === $result) {
        throw new 
    Exception('Cannot write target file');
    }

    echo 
    sprintf('ok (%d bytes wrote)'$result) . PHP_EOL;

    Kommentar


    • #3
      Zitat von Zeichen32 Beitrag anzeigen
      Getest mit PHP:
      Code:
      PHP 8.0.13 (cli) (built: Nov 19 2021 06:34:49) ( NTS )
      Copyright (c) The PHP Group
      Zend Engine v4.0.13, Copyright (c) Zend Technologies
      with Zend OPcache v8.0.13, Copyright (c), by Zend Technologies

      PHP-Code:
      <?php

      $source 
      'https://www.php.de/images/misc/phpdelogo.png';
      $targetFile 'webcamvogelhausvorn.png';
      $targetPath __DIR__// Without leading /

      $opts = [
      'http' => [
      'method' => 'GET',
      'timeout' => 10,
      ],
      'ssl' => [
      'verify_peer' => true// Set false for self sign certificate
      'verify_peer_name' => true// Set false for self sign certificate
      ],
      ];

      $context stream_context_create($opts);
      $tmp = @file_get_contents($sourcefalse$context);

      // Throw error on failed download
      if (false === $tmp) {
      throw new 
      Exception('Cannot download source file!');
      }

      // Throw error if target path is not writeable for php user
      if (!is_writable($targetPath)) {
      throw new 
      Exception('Cannot write target path. Permission denied?');
      }


      $targetFilename sprintf('%s/%s'$targetPath$targetFile);

      // If target file already exists, delete the file
      if (is_file($targetFile)) {
      $result unlink($targetFile);
      if (
      false === $result) {
      throw new 
      Exception('Cannot delete existing file!');
      }
      }

      // Write new target file
      $result file_put_contents($targetFilename$tmp);

      if (
      false === $result) {
      throw new 
      Exception('Cannot write target file');
      }

      echo 
      sprintf('ok (%d bytes wrote)'$result) . PHP_EOL;
      Ich danke dir erstmal.
      Wenn ich dein Script in die PHP Datei einsetze und aufrufe bekomme ich diese Meldung:
      Code:
      ok (16966 bytes wrote)
      Also alles ok.

      Wenn ich meine URL des Webcam Bild eingebe und dann die PHP Datei aufrufe dann bekomme ich diese Fehlermeldung:
      Code:
      Fatal error: Uncaught Exception: Cannot download source file! in /var/www/web145/html/Vogelhaus_Cam1/getimage.php:23 Stack trace: #0 {main} thrown in /var/www/web145/html/var/www/web145/html/Vogelhaus_Cam1/getimage.php on line 23
      Habe dann noch andere Bild URL`s getestet, alle funktionieren mit deinem Script. Sämtliche Bild URL die auf meinem Server liegen und die ich dann in das Script hinterlege bringen die Fehlermeldung
      Es scheint ein Problem auf meinem Server zu geben. Habe den Support angefunkt. Mal sehen ob die was finden können.

      Für deine Hilfe würde ich mich gern erkenntlich zeigen. Hast du paypal?

      Kommentar


      • #4
        Rufst du das Bild über eine HTTPs Adresse auf? Dann könntest du einmal probieren verify_peer und verify_peer_name auf false zu setzen. Vll. ist ja das Zertifikat abgelaufen oder falls es ein LetsEncrypt Zertifikat ist, vertraut der Server dem neuen Root Zertifikat noch nicht. In beiden Fällen sollte das false helfen.

        Zitat von frank-werner Beitrag anzeigen
        Für deine Hilfe würde ich mich gern erkenntlich zeigen. Hast du paypal?
        Ich bin nicht hier um Geld zu verdienen. Aber vll. kannst du ja ein paar Euro für ein Guten zweck deiner Wahl spenden.

        Kommentar


        • #5
          Zitat von Zeichen32 Beitrag anzeigen
          Rufst du das Bild über eine HTTPs Adresse auf? Dann könntest du einmal probieren verify_peer und verify_peer_name auf false zu setzen. Vll. ist ja das Zertifikat abgelaufen oder falls es ein LetsEncrypt Zertifikat ist, vertraut der Server dem neuen Root Zertifikat noch nicht. In beiden Fällen sollte das false helfen.



          Ich bin nicht hier um Geld zu verdienen. Aber vll. kannst du ja ein paar Euro für ein Guten zweck deiner Wahl spenden.
          Das Script läuft super in einem leeren Serververzeichnis. In meinem alten Verzeichnis wo auch eine Joomla 4.0 liegt wird es geblockt. Auch eine der letzten Joomla Version der 3er Baureihe blockt die Scripts. Keine Ahn ung warum das so ist. Diese Meldung bestätigte auch mein Server Provider. Ich danke dir für das tolle Script. Hätte dir gern was gespendet. Ok dann eben wieder für die Krebshilfe (machte ich schon öfters).

          Freue mich das es so gut klappt. Danke

          Kommentar

          Lädt...
          X