classes / Logger.php / Ошибка PHP - PullRequest
0 голосов
/ 07 мая 2018

CodeIgniter: Обнаружена ошибка PHP

Серьезность: Предупреждение

Сообщение: fopen (scanner / logs / eventlogs_2018-05-06.txt): не удалось открыть поток: нет такого файла или каталога

Имя файла: classes / Logger.php

Logger.php

<?php

class Logger{

    private $logFile;
    private $fp;

    public function lfile($path) {
        $this->logFile = $path;
    }

    public function lwrite($message){

        if(!$this->fp) 
            $this->lopen();
        $scriptName = pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME);
        $time = date('H:i:s:ms');
        fwrite($this->fp, "$time ,$scriptName, $message\n");
    }

    private function lopen(){

        $lfile = $this->logFile;
        $today = date('Y-m-d');
        $this->fp = fopen($lfile . '_' . $today . '.txt', 'a') or exit("Can't open $lfile!");
    }
}
?>

Имейте в виду, что мой каталог не / scanner / logs / eventlogs /, а его / application / user / views / scanner /, поэтому я понятия не имею, почему регистратор пытается открыть его ... Кто-нибудь может помочь?

Я использую это как форму для веб-сканирования! фрагмент

$log = new Logger();
			$log->lfile('scanner/logs/eventlogs'); // THIS IS WHERE ERROR POPS UP

			$log->lwrite('Connecting to database');

			$connectionFlag = connectToDb($db);

			if(!$connectionFlag)
			{
				$log->lwrite('Error connecting to database');
				echo 'Error connecting to database';
				return;
			}

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Используйте константу __DIR__, которая возвращает текущий каталог скрипта.

public function lfile($path) {
    $this->logFile = __DIR__ . "/" . $path; // sprintf("%s/%s", __DIR__, $path);
}

Подробнее: http://php.net/manual/en/language.constants.predefined.php

0 голосов
/ 07 мая 2018

Вы должны изменить эту функцию (которая, кажется, устанавливает путь для других функций):

public function lfile($path) {
    $this->logFile = $path;
}

На что-то вроде:

public function lfile($path) {
    $this->logFile = FCPATH . $path;
}

Таким образом, все ваши пути будут из C:\xampp\htdocs\ (пример FCPATH) и не будут зависеть от текущего рабочего каталога, из которого вы вызываете свою функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...