Создание лог-скрипта - PullRequest
       7

Создание лог-скрипта

0 голосов
/ 04 февраля 2020

Я хотел бы создавать журнал в базе данных каждый раз, когда я отправляю или получаю электронное письмо. Мне нужно получать событие из Outlook каждый раз, когда отправляется электронное письмо или создается контакт. Сервер является LINUX сервером на Amazon https://aws.amazon.com/amazon-linux-ami/2017.09-release-notes/

Код, который я пробовал до сих пор, приведен ниже.

function wh_log($log_msg)
{
    $log_filename = "log";
    if (!file_exists($log_filename)) 
    {
        mkdir($log_filename, 0777, true);
    }
    $log_file_data = $log_filename.'/log_' . date('d-M-Y') . '.log';
    file_put_contents($log_file_data, $log_msg . "\n", FILE_APPEND);
}

Не работает. Могу ли я знать, что я делаю неправильно?

1 Ответ

1 голос
/ 04 февраля 2020

Вы почти правы!

Я бы сделал константу для имени папки журнала. Затем я бы также записал имя файла журнала с указанием года, месяца и дня, чтобы оно сортировалось в алфавитном порядке.

Этот код работает на моем компьютере:

<?php

define('LOG_FOLDER', '/var/log/my_php_app');

function wh_log($log_msg)
{
    if (!file_exists(LOG_FOLDER)) {
        if (!@mkdir(LOG_FOLDER, 0775, true)) {
            die('Cannot create the log folder!');
        }
    }
    $log_filename = LOG_FOLDER .'/log_' . date('Y-m-d') . '.log';
    file_put_contents($log_filename, $log_msg . "\n", FILE_APPEND);
}


wh_log('Starting the script');

sleep(1);

wh_log('Finished!');

Вы проверяли, что папка, в которой будет создана папка log, имеет разрешение на запись?

Лучше проверить значение результата mkdir(), прежде чем продолжить. Здесь я жестоко останавливаю сценарий PHP (что не лучший вариант, но только для примера).

Проверьте журнал ошибок PHP, чтобы узнать, можете ли вы получить больше информации о том, что идет не так.

Я ожидаю, что ваш код PHP выполняется с указанными c учетной записью пользователя и группой. Это может быть www-data, apache или указанный c пользователь учетной записи. Это зависит от хостинга. Я обычно создаю папки журналов заранее при развертывании сайта. Сама папка должна иметь read , write (и также может иметь list при необходимости) для пользователя или группы PHP.

Обычно я делаю это в терминале:

sudo mkdir /var/log/my_php_app
sudo chown root:www-data /var/log/my_php_app
sudo chmod ug=rwx,o=rx /var/log/my_php_app/
...