0
<?php
error_reporting(E_ALL);
// Getting the information 
$ipaddress = $_SERVER['REMOTE_ADDR']; 
$page = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}";
if(!empty($_SERVER['QUERY_STRING']) $page .= $_SERVER['QUERY_STRING'];
$referrer = $_SERVER['HTTP_REFERER'];
$datetime = mktime(); 
$useragent = $_SERVER['HTTP_USER_AGENT'];
$remotehost = getHostByAddr($ipaddress);

// Create log line
$logline = $ipaddress . '|' . $referrer . '|' . $datetime . '|' . $useragent . '|' . $remotehost . '|' . $page . "\n"; 
echo $logline;
// Write to log file: 
//$logfile = 'logfile.txt';
$logfile = '/home/www/agro-dive.onlinewebshop.net/logfile.txt';

// Open the log file in "Append" mode 
if (!$handle = fopen($logfile, 'a+')) {
    die("Failed to open log file"); 
} 

// Write $logline to our logfile. 
if (fwrite($handle, $logline) == FALSE) {
    die("Failed to write to log file"); 
} 

fclose($handle);  

?>

このphpを開こうとすると、サーバーエラーが発生します

HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.

また、ここの手順に従ってテストしましたが、ログメッセージは生成されませんでした

4

4 に答える 4

1

「サーバーエラー」は、「特定のエラーメッセージについてサーバーerror_logを調べる必要がある」ことを意味します。

デバッグとは、コードを監視したり推測したりするのではなく、エラーメッセージを読み取ることを意味します。

于 2011-03-30T06:58:11.743 に答える
0

デバッグとロギングについてのあなたの質問に答えることはできませんが、それが何の価値があるかについてです。エラーは6行目にあります。次のように置き換えます。

if(!empty($_SERVER['QUERY_STRING']))
    $page .= $_SERVER['QUERY_STRING'];
于 2011-03-30T07:28:03.110 に答える
0

ここにBobDcoder!2019アップデート

これは解決済み/承認済み/その他のマークが付けられていますが、ドキュメントによると、答えは間違った修正であるように見えます。多くの初心者とベテランのコーダーは同様に、これが三元的なifステートメントであると信じています。(ただし、あなたは三元を綴ります、笑。)しかし、元のポスター(op)は異なって述べています!

私は間違っているかもしれませんが、問題は次のとおりだと思います。

$page = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}"; 
$page .= iif(!empty($_SERVER['QUERY_STRING']), "?{$_SERVER['QUERY_STRING']}", ""); 

(この $ pageは、コードの2行目の追加です。)

多くの初心者とベテランのコーダーは同様に、これが三元的なifステートメントであると信じています。(しかし、あなたは三元を綴ります、笑。)

元のドキュメントでは、OPはこれが関数呼び出しであると述べています。https://www.go4expert.com/articles/track-visitors-using-php-t195/

ドキュメントでOPを引用するには........"注:上記の例ではiif()という関数を使用しました。この関数はhttp://www.phpit.net/code/iifで入手できます。 -機能。」

残念ながら、iif()関数へのリンクが切れているため、誰かがこの関数の古いコードを持っていて、ここまたは他のリポジトリに投稿できる可能性があります。

上記の他の修正により、コードがtrueまたはfalseをテストし、残りのコードをフォールスルーして処理できる可能性がありますが、OPはそれを関数として他の目的に使用した可能性があります(関数のプログラミング選択が不適切)電話)。

于 2019-07-28T20:26:50.523 に答える
-1
// Write to log file: 
//$logfile = 'logfile.txt';
$logfile = 'log.log';

ここで、log.logはログファイルです

于 2012-07-13T16:27:21.097 に答える