这是我在多个vBulletin数据库中永远存在的问题。我无法编辑数据库来更改cookie路径,bburl或它是否处于活动状态等设置。我的意思是,我可以使用PHPMyAdmin更改它们,但效果不会在网站上发生变化。
现在,我已经失去了对旧安装的访问权限,需要更改关闭的原因,bburl等。我更改了关闭原因的文本,但它仍然显示之前的文本,该板仍然关闭并且bburl仍然是错误的。
我已经验证它是正确的数据库和正确的服务器,因为这已经发生了很多次。也许我只是在这里遗漏了什么?我不知道。
答案 0 :(得分:2)
vBulletin不会直接从“设置”表中访问设置。
此信息适用于vBulletin 4.x,其他版本可能相同或不同。
保存设置后,它们会被序列化并存储在“数据存储”表中。 vBulletin从“数据存储”表中提取数据以供活动使用。
我没有必要使用以下步骤,但是我通过PhpMyAdmin更改了数据存储区和设置表中“bburl”条目的协议来测试它们。
您要查找的特定设置都存储在“options”数组中。
如果您知道要更改的设置的当前数据或变量名称,可以在序列化字符串中搜索它们并将其替换为新设置。
活动板的设置如下所示:s:8:"bbactive";i:1;
原因如下:
s:14:"bbclosedreason";s:125:"<p>Sorry, the board is unavailable at the moment while we are testing some functionality.</p>
<p>We will be back soon...</p>";
转到“数据存储区”表,在“标题”字段中找到“选项”条目。
从与“options”条目关联的“data”字段中复制序列化数据。请务必备份,以防您的更改导致问题。
在数据中搜索要更改的项目,更改数据时,请确保通过更新与该条目关联的长度来使用正确的序列化格式。
使用修改后的序列化数据更新“数据存储区”表中的“选项”条目,以及更新设置表中的各个条目。
更新“设置”和“数据存储”表的功能位于此处:
includes\adminfunctions.php
大约2474行(取决于您的版本)。
// #############################################################################
/**
* Reads settings from the settings then saves the values to the datastore
*
* After reading the contents of the setting table, the function will rebuild
* the $vbulletin->options array, then serialize the array and save that serialized
* array into the 'options' entry of the datastore in the database
*
* @return array The $vbulletin->options array
*/
function build_options()
{
require_once(DIR . '/includes/adminfunctions_options.php');
global $vbulletin;
$vbulletin->options = array();
$settings = $vbulletin->db->query_read("SELECT varname, value, datatype FROM " . TABLE_PREFIX . "setting");
while ($setting = $vbulletin->db->fetch_array($settings))
{
$vbulletin->options["$setting[varname]"] = validate_setting_value($setting['value'], $setting['datatype'], true, false);
}
if (substr($vbulletin->options['cookiepath'], -1, 1) != '/')
{
$vbulletin->options['cookiepath'] .= '/';
$vbulletin->db->query_write("
UPDATE " . TABLE_PREFIX . "setting
SET value = '" . $vbulletin->db->escape_string($vbulletin->options['cookiepath']) . "'
WHERE varname = 'cookiepath'
");
}
build_datastore('options', serialize($vbulletin->options), 1);
return $vbulletin->options;
}