Вы почти правы!
Я бы сделал константу для имени папки журнала. Затем я бы также записал имя файла журнала с указанием года, месяца и дня, чтобы оно сортировалось в алфавитном порядке.
Этот код работает на моем компьютере:
<?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/