php - 创建日志脚本
问题描述
每次发送或接收电子邮件时,我都想在数据库中创建一个日志。每次发送电子邮件或创建联系人时,我都需要从 Outlook 接收事件。该服务器是亚马逊上的 LINUX 服务器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);
}
它不工作。我可以知道我在做什么不正确吗?
解决方案
你几乎是正确的!
我会为日志文件夹名称做一个常量。然后,我还将用年、月和日编写日志文件名,以便按字母顺序排序。
此代码适用于我的计算机:
<?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-data
或apache
特定帐户用户。这取决于托管。我通常在部署网站时会提前创建日志文件夹。文件夹本身应该为 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/
推荐阅读
- angular - 访问路由时出现 SSR Angular Universal Server 错误
- javascript - 递归如何在倒计时函数中工作
- angular - 与 Webpack 相比,Angular CLI 开发构建速度较慢
- c# - 基于调用实例交换重用实例的日志记录操作
- c# - 使用 Web API 和 SQL Server 查询的庞大数据集基于游标的分页
- excel - 为多个工作表添加循环代码工作
- java - @GuardedBy 是否保护某些东西?
- python-3.x - 如何修复 ImportError:无法从“Test”导入名称“testMethod”
- java - Intellige Idea java spring应用程序不启动调试
- windows - 文件系统过滤器驱动程序和文件系统微过滤器驱动程序有什么区别?(视窗)