我正在为网站中完成的所有操作创建一些日志,这些日志可以存储在 .txt 文件中。
我的 php 代码在正常加载时工作正常,但是当我使用 ajax 时,似乎我没有读取 php 上的 fopen、fpost 方法..
请检查我的代码。
这是我的函数和ajax处理程序
function action_log( $msg ) {
$current_user = wp_get_current_user();
$path = "wp-content/themes/creation/templates/inc/log.txt";
$myfile = (file_exists($path)) ? fopen($path, "a+") : fopen($path, "w+");
$txt = $msg.$current_user->display_name."\n";
if ( $myfile ) {
fwrite( $myfile, $txt );
fclose( $myfile );
chmod($path, 0777);
$result = $txt;
return $result;
} else {
$result = $myfile;
return $txt;
}
}
add_action('wp_ajax_action-log-ajax', 'action_log_ajax');
add_action('wp_ajax_nopriv_action-log-ajax', 'action_log_ajax');
function action_log_ajax(){
$post = $_REQUEST;
$msg = $post['msg'];
$write = action_log( $msg );
exit( wp_send_json_success( $write ) );
}
我的jquery插件功能
$.send_log_changes = function( $msg ) {
var msgs = $msg;
var action = 'action-log-ajax';
console.log(msgs);
$.post({
url: plugins_ajax.ajaxUrl,
method: 'POST',
data: {
action: action,
msg: msgs
},
dataType: 'json',
success: function( respones ) {
console.log(respones);
}
});
}
我尝试使用 .ajax、.get、.post,但仍然出现相同的错误。 它总是返回
False
并且无法在文件中写入/打开。
文件打开操作似乎返回 false。您是否尝试过在 $path 变量中输入完整路径,即 /var/www/html/demo/wp-content/themes/creation/templates/inc/log.txt" 等。
讨厌复活这个,但在开发中运行良好后,在生产中遇到了类似的问题。事实证明,SELinux 在 prod 中启用并阻止了
fopen()
的文件创建。一旦禁用,它就可以正常工作。