Webseite erreichbar, überprüfen!
bearbeitet von Raketenwilli~~~PHP
curl_setopt( $ch, CURLOPT_VERBOSE, true );
~~~
> Du hast die Aktivierung nach der Ausgabe mit `print_r();` durchgeführt.
Editierungsfehler. Ich hatte die Zeile versehentlich zweimal eingefügt.
> Wo landet diese zusätzliche Auskunft dann?
> Kann ich die in PHP auffangen?
Das Handbuch sagt:
„***CURLOPT_VERBOSE**: true, um ausführliche Informationen auszugeben, entweder nach STDERR oder in die mittels der Option **CURLOPT_STDERR** gewählte Datei.*“
[https://www.php.net/manual/de/function.curl-setopt.php](https://www.php.net/manual/de/function.curl-setopt.php)
Das Handbuch ist da leider „etwas undeutlich bis falsch“: Erwartet wird nicht etwa ein Dateiname sondern eine „Ressource“, also das, was man in Perl einen „Filehandler“ nennen würde. Siehe also `fopen`, `tmpfile`, `fpassthru`, `fclose`, … - Das steht, soweit zum „undeutlich“, aber in einem Kasten an einer „entfernten Stelle“:
*“Für die folgenden option-Parameter sollte value eine Stream-Resource sein, so wie sie z. B. mittels fopen() erstellt werden kann“*
(Falsch ist es aber auch: Es **MUSS** eine Stream-Resource sein.)
So. Wir wissen genug. Exekutieren wir das in dem wir die Daten, statt diese sofort in den Fehlerkanal auszugeben, in einer temporären Datei speichern (und diese nach Ausgabe löschen):
~~~PHP
<?php
$dst_url = 'https://www.example.com';
header( 'Content-Type text/plain' );
error_reporting( E_ALL );
ini_set( 'display_errors', 1);
$ch = curl_init();
$tempfile = tmpfile(); ### Erzeugen der temporären Datei
curl_setopt( $ch, CURLOPT_URL, $dst_url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'HEAD' );
curl_setopt( $ch, CURLOPT_NOBODY, true );
### So geht das:###
curl_setopt( $ch, CURLOPT_VERBOSE, true );
curl_setopt( $ch, CURLOPT_STDERR, $tempfile );
$result = curl_exec( $ch );
echo "-------------------------------" . PHP_EOL;
echo "Daten aus der temporären Datei:" . PHP_EOL;
echo "-------------------------------" . PHP_EOL;
fpassthru( $tempfile );
### Das fclose löscht auch die temporäre Datei.
### Frühestmöglich ausführen. Grund im Handbuch:
### Wird das Skript unerwartet beendet,
### wird die temporäre Datei möglicherweise nicht gelöscht.
fclose( $tempfile );
echo "-------------------------------" . PHP_EOL;
echo PHP_EOL . "Gezeigt und gelöscht! Jetzt ..." . PHP_EOL;
echo "-------------------------------" . PHP_EOL;
echo "Daten von curl_getinfo:" . PHP_EOL;
echo "-------------------------------" . PHP_EOL;
print_r( curl_getinfo( $ch ) );
echo "-------------------------------" . PHP_EOL;
~~~
Webseite erreichbar, überprüfen!
bearbeitet von Raketenwilli~~~PHP
curl_setopt( $ch, CURLOPT_VERBOSE, true );
~~~
> Du hast die Aktivierung nach der Ausgabe mit `print_r();` durchgeführt.
Editierungsfehler. Ich hatte die Zeile versehentlich zweimal eingefügt.
> Wo landet diese zusätzliche Auskunft dann?
> Kann ich die in PHP auffangen?
Das Handbuch sagt:
„***CURLOPT_VERBOSE**: true, um ausführliche Informationen auszugeben, entweder nach STDERR oder in die mittels der Option **CURLOPT_STDERR** gewählte Datei.*“
[https://www.php.net/manual/de/function.curl-setopt.php](https://www.php.net/manual/de/function.curl-setopt.php)
Das Handbuch ist da leider etwas undeutlich: Erwartet wird nicht etwa ein Dateiname sondern eine „Ressource“, also das, was man in Perl einen „Filehandler“ nennen würde. Siehe also `fopen`, `tmpfile`, `fpassthru`, `fclose`, …
Wenn Du also die Daten, statt diese sofort auszugeben, in einer temporären Datei speichern (und diese nach Ausgabe löschen) willst:
~~~PHP
<?php
$dst_url = 'https://www.example.com';
header( 'Content-Type text/plain' );
error_reporting( E_ALL );
ini_set( 'display_errors', 1);
$ch = curl_init();
$tempfile = tmpfile(); ### Erzeugen der temporären Datei
curl_setopt( $ch, CURLOPT_URL, $dst_url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'HEAD' );
curl_setopt( $ch, CURLOPT_NOBODY, true );
### So geht das:###
curl_setopt( $ch, CURLOPT_VERBOSE, true );
curl_setopt( $ch, CURLOPT_STDERR, $tempfile );
$result = curl_exec( $ch );
echo "-------------------------------" . PHP_EOL;
echo "Daten aus der temporären Datei:" . PHP_EOL;
echo "-------------------------------" . PHP_EOL;
fpassthru( $tempfile );
### Das fclose löscht auch die temporäre Datei.
### Frühestmöglich ausführen. Grund im Handbuch:
### Wird das Skript unerwartet beendet,
### wird die temporäre Datei möglicherweise nicht gelöscht.
fclose( $tempfile );
echo "-------------------------------" . PHP_EOL;
echo PHP_EOL . "Gezeigt und gelöscht! Jetzt ..." . PHP_EOL;
echo "-------------------------------" . PHP_EOL;
echo "Daten von curl_getinfo:" . PHP_EOL;
echo "-------------------------------" . PHP_EOL;
print_r( curl_getinfo( $ch ) );
echo "-------------------------------" . PHP_EOL;
~~~
Webseite erreichbar, überprüfen!
bearbeitet von Raketenwilli~~~PHP
curl_setopt( $ch, CURLOPT_VERBOSE, true );
~~~
> Du hast die Aktivierung nach der Ausgabe mit `print_r();` durchgeführt.
Editierungsfehler. Ich hatte die Zeile versehentlich zweimal eingefügt.
> Wo landet diese zusätzliche Auskunft dann?
> Kann ich die in PHP auffangen?
Das Handbuch sagt:
„***CURLOPT_VERBOSE**: true, um ausführliche Informationen auszugeben, entweder nach STDERR oder in die mittels der Option **CURLOPT_STDERR** gewählte Datei.*“
[https://www.php.net/manual/de/function.curl-setopt.php](https://www.php.net/manual/de/function.curl-setopt.php)
Das Handbuch ist da etwas undeutlich, erwartet wird nicht ein Dateiname, sondern eine „Ressource“, also das, was man in Perl einen „Filehandler“ nennen würde. Siehe also `fopen`, `tmpfile`, `fpassthru`, `fclose`, …
Wenn Du also die Daten, statt diese sofort auszugeben, in einer temporären Datei speichern (und diese nach Ausgabe löschen) willst:
~~~PHP
<?php
$dst_url = 'https://www.example.com';
header( 'Content-Type text/plain' );
error_reporting( E_ALL );
ini_set( 'display_errors', 1);
$ch = curl_init();
$tempfile = tmpfile(); ### Erzeugen der temporären Datei
curl_setopt( $ch, CURLOPT_URL, $dst_url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'HEAD' );
curl_setopt( $ch, CURLOPT_NOBODY, true );
### So geht das:###
curl_setopt( $ch, CURLOPT_VERBOSE, true );
curl_setopt( $ch, CURLOPT_STDERR, $tempfile );
$result = curl_exec( $ch );
echo "-------------------------------" . PHP_EOL;
echo "Daten aus der temporären Datei:" . PHP_EOL;
echo "-------------------------------" . PHP_EOL;
fpassthru( $tempfile );
### Das fclose löscht auch die temporäre Datei.
### Frühestmöglich ausführen. Grund im Handbuch:
### Wird das Skript unerwartet beendet,
### wird die temporäre Datei möglicherweise nicht gelöscht.
fclose( $tempfile );
echo "-------------------------------" . PHP_EOL;
echo PHP_EOL . "Gezeigt und gelöscht! Jetzt ..." . PHP_EOL;
echo "-------------------------------" . PHP_EOL;
echo "Daten von curl_getinfo:" . PHP_EOL;
echo "-------------------------------" . PHP_EOL;
print_r( curl_getinfo( $ch ) );
echo "-------------------------------" . PHP_EOL;
~~~
Webseite erreichbar, überprüfen!
bearbeitet von Raketenwilli~~~PHP
curl_setopt( $ch, CURLOPT_VERBOSE, true );
~~~
> Du hast die Aktivierung nach der Ausgabe mit `print_r();` durchgeführt.
Editierungsfehler. Ich hatte die Zeile versehentlich zweimal eingefügt.
> Wo landet diese zusätzliche Auskunft dann?
> Kann ich die in PHP auffangen?
Das Handbuch sagt:
„***CURLOPT_VERBOSE**: true, um ausführliche Informationen auszugeben, entweder nach STDERR oder in die mittels der Option **CURLOPT_STDERR** gewählte Datei.*“
[https://www.php.net/manual/de/function.curl-setopt.php](https://www.php.net/manual/de/function.curl-setopt.php)
Das Handbuch ist da etwas undeutlich, erwartet wird nicht ein Dateiname, sondern eine „Ressource“, also das, was man in Perl einen „Filehandler“ nennen würde. Siehe also `fopen`, `tmpfile`, `fpassthru`, `fclose`, …
Wenn Du also die Daten, statt diese sofort auszugeben, in einer temporären Datei speichern (und diese nach Ausgabe löschen) willst:
~~~PHP
<?php
$dst_url = 'https://www.example.com';
header( 'Content-Type text/plain' );
error_reporting( E_ALL );
ini_set( 'display_errors', 1);
$ch = curl_init();
$tempfile = tmpfile(); ### Erzeugen der temporären Datei
curl_setopt( $ch, CURLOPT_URL, $dst_url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'HEAD' );
curl_setopt( $ch, CURLOPT_NOBODY, true );
### So geht das:###
curl_setopt( $ch, CURLOPT_VERBOSE, true );
curl_setopt( $ch, CURLOPT_STDERR, $tempfile );
$result = curl_exec( $ch );
echo "-------------------------------" . PHP_EOL;
echo "Daten aus der temporären Datei:" . PHP_EOL;
echo "-------------------------------" . PHP_EOL;
fpassthru( $tempfile );
### Das fclose löscht auch die temporäre Datei.
### Frühestmöglich ausführen. Grund im Handbuch:
### Wird das Skript unerwartet beendet,
### wird die temporäre Datei möglicherweise nicht gelöscht.
fclose( $tempfile );
echo "-------------------------------" . PHP_EOL;
echo "\nGezeigt und gelöscht! Jetzt ...\n";
echo "-------------------------------" . PHP_EOL;
echo "Daten von curl_getinfo:" . PHP_EOL;
echo "-------------------------------" . PHP_EOL;
print_r( curl_getinfo( $ch ) );
echo "-------------------------------" . PHP_EOL;
~~~
Webseite erreichbar, überprüfen!
bearbeitet von Raketenwilli~~~PHP
curl_setopt( $ch, CURLOPT_VERBOSE, true );
~~~
> Du hast die Aktivierung nach der Ausgabe mit `print_r();` durchgeführt.
Editierungsfehler. Ich hatte die Zeile versehentlich zweimal eingefügt.
> Wo landet diese zusätzliche Auskunft dann?
> Kann ich die in PHP auffangen?
Das Handbuch sagt:
**CURLOPT_VERBOSE**: true, um ausführliche Informationen auszugeben, entweder nach STDERR oder in die mittels der Option CURLOPT_STDERR gewählte Datei.
[https://www.php.net/manual/de/function.curl-setopt.php](https://www.php.net/manual/de/function.curl-setopt.php)
Das Handbuch ist da etwas undeutlich, erwartet wird nicht ein Dateiname, sondern eine „Ressource“, also das, was man in Perl einen „Filehandler“ nennen würde. siehe also `fopen`, `tmpfile`, `fpassthru`, `fclose`, …
Wenn Du also die Daten statt diese sofort auszugeben also in einer temporären Datei speichern (und diese nach Ausgabe löschen) willst:
~~~PHP
<?php
$dst_url = 'https://www.example.com';
header( 'Content-Type text/plain' );
error_reporting( E_ALL );
ini_set( 'display_errors', 1);
$ch = curl_init();
$tempfile = tmpfile(); ### Erzeugen der temporären Datei
curl_setopt( $ch, CURLOPT_URL, $dst_url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'HEAD' );
curl_setopt( $ch, CURLOPT_NOBODY, true );
### So geht das:###
curl_setopt( $ch, CURLOPT_VERBOSE, true );
curl_setopt( $ch, CURLOPT_STDERR, $tempfile );
$result = curl_exec( $ch );
echo "-------------------------------" . PHP_EOL;
echo "Daten aus der temporären Datei:" . PHP_EOL;
echo "-------------------------------" . PHP_EOL;
fpassthru( $tempfile );
### Das fclose löscht auch die temporäre Datei.
### Frühestmöglich ausführen. Grund im Handbuch:
### Wird das Skript unerwartet beendet,
### wird die temporäre Datei möglicherweise nicht gelöscht.
fclose( $tempfile );
echo "-------------------------------" . PHP_EOL;
echo "\nGezeigt und gelöscht! Jetzt ...\n";
echo "-------------------------------" . PHP_EOL;
echo "Daten von curl_getinfo:" . PHP_EOL;
echo "-------------------------------" . PHP_EOL;
print_r( curl_getinfo( $ch ) );
echo "-------------------------------" . PHP_EOL;
~~~