gpt4 book ai didi

php - 手动 wp_install() 困难

转载 作者:行者123 更新时间:2023-12-04 16:25:53 29 4
gpt4 key购买 nike

我正在尝试使用以下代码在 PHP 中自动安装 WordPress 发行版:

$base_dir = '/home/username/wordpress_location';
chdir($base_dir);

define('WP_SITEURL', 'http://www.domain.com/');
define('WP_INSTALLING', true);

require_once 'wp-load.php';
require_once 'wp-admin/includes/upgrade.php';
require_once 'wp-includes/wp-db.php';
$result = wp_install($title, $username, $email, true, null, $password);

当我手动运行 wp_install() [/wp-admin/includes/upgrade.php] 时,出现此错误:

fatal error :在第 85 行的/home/username/public_html/wp-admin/includes/upgrade.php 中的非对象上调用成员函数 flush_rules()

看了WordPress source code之后,当 $wp_rewrite 本身不存在时,$wp_rewrite 似乎正在尝试调用 flush_rules()

另一个奇怪的转折是,这实际上与 wordpress-cli-installer 相同的代码.我的 wp-config.php 文件自动生成并准备就绪。

为什么 wordpress-cli-installer 的代码可以运行,而我的却不行?

编辑:

经过反复试验,我发现我的代码无法正常工作,因为它是在一个函数中定义和执行的。在我将代码与函数分离并执行后,它起作用了。然而,这引发了另一个问题。甚至可以在函数的内部执行上述代码吗?我尝试在 require_once 语句之后使用 $GLOBALS += get_defined_vars(); hack,但这似乎没有任何作用。换句话说:

<?php

$base_dir = '/home/username/wordpress_location';
chdir($base_dir);

define('WP_SITEURL', 'http://www.domain.com/');
define('WP_INSTALLING', true);

require_once 'wp-load.php';
require_once 'wp-admin/includes/upgrade.php';
require_once 'wp-includes/wp-db.php';
$result = wp_install($title, $username, $email, true, null, $password);

// ^ This works.
// v This won't work.

function run(){
$base_dir = '/home/username/wordpress_location';
chdir($base_dir);

define('WP_SITEURL', 'http://www.domain.com/');
define('WP_INSTALLING', true);

require_once 'wp-load.php';
require_once 'wp-admin/includes/upgrade.php';
require_once 'wp-includes/wp-db.php';
$result = wp_install($title, $username, $email, true, null, $password);
}
run();

?>

最佳答案

如何在函数内部使用 require_once 同时仍然能够访问和管理全局变量?这种想法大体上是错误的。您可以制作全局唯一必需的变量(可能会因版本而异)。但是“肮脏”的方式是

function make_global()
{
$test_var = "I'm local";
$GLOBALS += get_defined_vars();
}
var_dump(isset($test_var));
make_global();
var_dump(isset($test_var));

关于php - 手动 wp_install() 困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9136073/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com