remote copy script werkt niet meer
ik gebruik het volgende script
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
function retrieve($remote_filename, $home_filename, $autocomplete = true)
{
$awnser = '';
$headers = array();
$status = '';
$headerstopped = false;
$fileId = 0;
$size = 0;
$url = explode('/', $remote_filename);
if($url[0] == 'http:' OR $url[0] == 'https'){
$url = array_slice($url, 2);
}
if($autocomplete){
$home_filename .= $url[count($url)-1];
}
if(!$filehandle = fopen($home_filename, 'w')){
trigger_error('Could not create file', E_USER_ERROR);
return false;
}else{
if(!$handle = fsockopen($url[0], 80, $errno, $errstr, 30)) {
trigger_error("$errstr ($errno)", E_USER_ERROR);
fclose($filehandle);
return false;
}else{
$out = "GET /".implode('/', array_slice($url, 1))." HTTP/1.0\r\n";
$out .= "Host: ".$url[0]."\r\n";
$out .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($handle, $out);
while (!feof($handle)) {
if(!$headerstopped){
$awnser .= fgets($handle, 8192);
if(stristr($awnser, "\r\n\r\n")){
list($header, $data) = explode("\r\n\r\n", $awnser);
$header = analizeHeader($header);
if(stristr($header['Status'], '200 OK')){
$headerstopped = true;
unset($awnser);
}else{
if(stristr($header['Status'], '400')){
trigger_error('Bad request', E_USER_ERROR);
}
elseif(stristr($header['Status'], '404')){
trigger_error('File not found', E_USER_ERROR);
}
unset($awnser);
fclose($handle);
fclose($filehandle);
return false;
}
}
}else{
$buffer = fgets($handle, 8192);
fwrite($filehandle, $buffer);
$buffer = NULL;
}
}
fclose($handle);
fclose($filehandle);
return $home_filename;
}
}
}
function analizeHeader($header)
{
$headers = array();
foreach(explode("\r\n", $header) as $value){
if(stristr($value, ': ')){
list($key, $value) = explode(': ', $value);
$headers[$key] = $value;
}else{
$headers['Status'] = $value;
}
}
return $headers;
}
?>
function retrieve($remote_filename, $home_filename, $autocomplete = true)
{
$awnser = '';
$headers = array();
$status = '';
$headerstopped = false;
$fileId = 0;
$size = 0;
$url = explode('/', $remote_filename);
if($url[0] == 'http:' OR $url[0] == 'https'){
$url = array_slice($url, 2);
}
if($autocomplete){
$home_filename .= $url[count($url)-1];
}
if(!$filehandle = fopen($home_filename, 'w')){
trigger_error('Could not create file', E_USER_ERROR);
return false;
}else{
if(!$handle = fsockopen($url[0], 80, $errno, $errstr, 30)) {
trigger_error("$errstr ($errno)", E_USER_ERROR);
fclose($filehandle);
return false;
}else{
$out = "GET /".implode('/', array_slice($url, 1))." HTTP/1.0\r\n";
$out .= "Host: ".$url[0]."\r\n";
$out .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($handle, $out);
while (!feof($handle)) {
if(!$headerstopped){
$awnser .= fgets($handle, 8192);
if(stristr($awnser, "\r\n\r\n")){
list($header, $data) = explode("\r\n\r\n", $awnser);
$header = analizeHeader($header);
if(stristr($header['Status'], '200 OK')){
$headerstopped = true;
unset($awnser);
}else{
if(stristr($header['Status'], '400')){
trigger_error('Bad request', E_USER_ERROR);
}
elseif(stristr($header['Status'], '404')){
trigger_error('File not found', E_USER_ERROR);
}
unset($awnser);
fclose($handle);
fclose($filehandle);
return false;
}
}
}else{
$buffer = fgets($handle, 8192);
fwrite($filehandle, $buffer);
$buffer = NULL;
}
}
fclose($handle);
fclose($filehandle);
return $home_filename;
}
}
}
function analizeHeader($header)
{
$headers = array();
foreach(explode("\r\n", $header) as $value){
if(stristr($value, ': ')){
list($key, $value) = explode(': ', $value);
$headers[$key] = $value;
}else{
$headers['Status'] = $value;
}
}
return $headers;
}
?>
en roep het aan met
Code (php)
1
2
3
4
5
6
2
3
4
5
6
require('afbeelding.php');
if($file = retrieve($plaatje, './')){
echo '<img src="'.$file.'"/>';
}else{
echo 'error';
}
if($file = retrieve($plaatje, './')){
echo '<img src="'.$file.'"/>';
}else{
echo 'error';
}
ik heb het geheel nu overgeplaatst naar een andere server en nu werkt het niet meer. met error_reporting(E_ALL); krijg ik geen fouten te zien maar de site stopt gewoon.
waar kan dit aan gelegen hebben?
alvast bedankt, jesper
*lekker bumpen*
Dan gaat er blijkbaar toch iets fout. Controleer eens of de display_errors instelling in je php.ini wel aan staat. Dat is namelijk vrij essentieel als je fouten wilt zien...
htdocs/site/afbeelding.php on line 26
de bovenste is 26
Code (php)
1
2
2
if(!$handle = fsockopen($url[0], 80, $errno, $errstr, 30)) {
trigger_error("$errstr ($errno)", E_USER_ERROR);
trigger_error("$errstr ($errno)", E_USER_ERROR);
dit script is niet van mij maar verder word nergens $erno gebruikt.
Gewijzigd op 01/01/1970 01:00:00 door nvt nvt
$errno bestaat niet! Overigens zou ik niet de enkele '=' operator gebruiken. Als je wil vergelijken gebruik dan de dubbele '='.
Desalniettemin is de plaats waar $errno in de functie staat leeglaatbaar. Ik zou even voordat je met de if begint $errno = ''; plaatsen. Aangezien ik vrees dat hij hierna voor $errstr een error teruggeeft, zou ik die ook even d'rvoor plaatsen (of wordt hij wel gebruikt?).
Maar je zegt dat hij blijft hangen, het script. Dat klinkt als een timeout op een blocking functie. Zou je rondom alle fsockopen, fwrite, fopen, fclose en fgets eens echo's plaatsen zodat je kan zien tot waar hij werkt, en waar hij ermee kapt?
Warning: fsockopen() has been disabled for security reasons in /home/vol4/byethost.nl/byet_1506309/dvdtjes12.byethost.nl
/htdocs/site/afbeelding.php on line 27
hoe zet ik het weer aan?
Gewijzigd op 01/01/1970 01:00:00 door nvt nvt
deze is door je host uitgeschakeld, ik zou hun een mailtje sturen om het weer aan te zetten..
dan gaan we dat proberen
Ps. Heb er nooit mee gewerkt...