我正在编写的WordPress插件遇到最奇怪的问题。我已经在插件上工作了几周了,这个问题才发生。
在对执行顺序进行故障排除时,我决定注释掉一些代码。但是,当我激活插件时,收到一个致命错误,指示Apache仍在尝试执行代码。
这是来自includes / WPSCAPLogger / WPSCAPLogger.php的相关功能:
function logMessage($logType, $message) {
try {
global $tablePrefix;
global $wpdb;
$tablePrefix = $wpdb->prefix;
$tableName = $tablePrefix . 'wpscap_log_category';
$result = $wpdb->get_row( "SELECT id FROM {$tableName} WHERE log_category LIKE '{$logType}'", OBJECT );
$logTypeID = $result->id;
$tableName = $tablePrefix . 'wpscap_log';
$data = array('log_category_id' => $logTypeID, 'log_entry' => $message);
$wpdb->insert($tableName, $data);
} catch (Exception $e) {
die('Critical error with logger.');
// TO DO: Handle this better -- or default to PHP error log?
}
}
我注释了try块中的所有内容,即4到17行。然后在应用程序中收到以下错误:
[表'bsd_dev.wp_wpscap_log_category'不存在] SELECT id FROM wp_wpscap_log_category WHERE log_category像“错误”
注意:试图获取非对象的属性“ id” C:\ xampp \ htdocs \ battlestardigital \ wp-content \ plugins \ stripe-connect-auto-provision \ includes \ WPSCAPLogger \ WPSCAPLogger.php 第12行WordPress数据库错误:[表'bsd_dev.wp_wpscap_log' 不存在]显示
中的完整列wp_wpscap_log
WordPress数据库错误:[表'bsd_dev.wp_wpscap_log_category' 不存在]在wp_wpscap_log_category中选择ID log_category像“错误”
注意:试图获取非对象的属性“ id” C:\ xampp \ htdocs \ battlestardigital \ wp-content \ plugins \ stripe-connect-auto-provision \ includes \ WPSCAPLogger \ WPSCAPLogger.php 第12行WordPress数据库错误:[表'bsd_dev.wp_wpscap_log' 不存在]显示
中的完整列wp_wpscap_log
我认为那很奇怪,所以我删除了插件,确保注释掉了所有行,重新启动XAMPP,然后重新安装。同样的错误。然后我重新启动计算机,仍然出现相同的错误。
最后,我在WordPress本身内部打开了文件,并删除了这些行,同时也修复了die
行。现在,整个功能如下:
function logMessage($logType, $message) {
try {
} catch (Exception $e) {
error_log($e, 0);
}
}
我还在代码编辑器中打开了WordPress,并在整个代码库中搜索了“ wpscap_log_category”。我在debug.log中以及在创建表的类中找到了它,这与预期的一样。
然后,我尝试再次激活该插件。该插件实际上确实创建了表格,但是我仍然收到相同的错误。
要进行故障排除似乎很奇怪!有建议吗?
编辑,我还清除了Chrome中的缓存,但这无济于事。我在Edge中尝试过;结果相同。
EDIT#2 我从来没有解决过这个问题。我在XAMPP中安装了一个新的测试站点,并上传了该插件,在该插件中工作正常。尽管已经多次清除了缓存,但是显然存在缓存问题。奇怪的。
答案 0 :(得分:0)
如果在另一个浏览器中打开它怎么办?还会出现相同的问题吗? 我可能是一个缓存问题。