创建日志脚本



我想在每次发送或接收电子邮件时在数据库中创建一个日志。每次发送电子邮件或创建联系人时,我都需要从 Outlook 接收事件。该服务器是 Amazon https://aws.amazon.com/amazon-linux-ami/2017.09-release-notes/上的 LINUX 服务器

到目前为止,我尝试的代码如下。

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);
}

它不起作用。 我可以知道我做错了什么吗?

你几乎是对的!

我会为日志文件夹名称做一个常量。 然后,我还会用年、月和日写日志文件名,以便按字母顺序排序。

此代码适用于我的计算机:

<?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代码使用特定的用户帐户和组运行。它可以是www-dataapache或特定的帐户用户。这取决于托管。我通常在部署网站时提前创建日志文件夹。文件夹本身应该为 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/

最新更新