手动 wp_install() 困难

2024-03-07

我正在尝试使用以下代码在 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: Call to a member function flush_rules() on a non object in /home/username/public_html/wp-admin/includes/upgrade.php on line 85

看完之后WordPress 源代码 http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/upgrade.php#L85, 看起来$wp_重写正在尝试打电话刷新规则() when $wp_重写本身并不存在。

另一个奇怪的变化是,这实际上与以下代码相同wordpress-cli-安装程序 https://github.com/nexcess/wordpress-cli-installer/blob/master/wordpress-cli-installer.php#L304。我的 wp-config.php 文件已自动生成并准备就绪。

为什么 wordpress-cli-installer 的代码可以工作,但我的却不能?

EDIT:

经过大量的试验和错误,我发现我的代码无法工作,因为它是在函数中定义和执行的。当我将代码与函数分离并执行后,它就起作用了。然而,这又提出了另一个问题。是否可以执行上面的代码inside一个函数的?我尝试过使用$GLOBALS += get_defined_vars();黑客之后需要一次声明,但这似乎没有任何作用。换句话说:

<?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();

?>

How do I use the require_once inside of a function while still being able to access and manage the globals?一般来说,这种想法是错误的。您可以仅将必需的变量设置为全局(可能会因版本而异)。但“肮脏”的方式是

function make_global()
{
    $test_var = "I'm local";
    $GLOBALS += get_defined_vars();
}
var_dump(isset($test_var));
make_global();
var_dump(isset($test_var));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手动 wp_install() 困难 的相关文章

  • 如何在 Carbon Laravel 中添加日期和另一个日期?

    在我的 laravel 项目中 我想将日期时间增加到前一个日期时间 这是我的代码 expire order 0 gt expire date new Carbon now gt addMonths 6 这两行的结果是 2018 01 28
  • PHP 正则表达式匹配字符串的最后一次出现

    我的字符串是 text1 A373R12345 我想找到该字符串最后出现的非数字数字 所以我使用这个正则表达式 0 9 然后我得到这个结果 1 A373 2 12345 但我的预期结果是 1 A373R 它有 R 2 12345 另一个例子
  • 如何更改codeception phpbrowser/mink超时

    我正在尝试使用代码接收创建测试 以检查页面在高负载的情况下是否正常工作 不幸的是 如果页面负载非常高并且测试开始 我会收到这样的错误 Codeception Exception ModuleConfig Codeception Util M
  • xdebug.remote_handler 在 PHP.INI 中设置,但未在 PHPinfo 中显示

    我正在尝试让 Xbdebug 与 NetBeans 一起运行 以便调试一些 PHP 代码 我确信几年前我已经让它工作了 然后切换了 IDE 现在想切换回来 When I try to debug the status bar shows 并
  • 使用 phpdocx 下载损坏的 .docx

    我有一个项目 我们使用 phpdocx pro 在模板中生成 docx 文件 我可以很容易地将数据输入到模板中 但是当下载文件并在 MS Word 2010 中打开时 程序报告无法打开文件 因为内容存在问题 详细信息是 文件已损坏 并且无法
  • file_get_contents 大文件上传

    我正在尝试使用 fsockopen 上传 2GB 以上的大文件 但 file get content 出现以下错误 我无法在内存中存储大文件 我需要分块发送数据 但不知道如何执行此操作 请问有人可以指导我吗 致命错误 允许的内存大小 134
  • 解析错误:语法错误,意外的 T_RETURN [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 遇到这个问
  • 收到警告“标头不能包含多个标头,检测到新行”

    我正在用 oops 进行编码 以便用 PHP 上传图像 但是提交图片后却出现警告 标题不能包含多个标题 检测到新行 下面是我的函数 它给出了错误 public function ft redirect query if REQUEST UR
  • 在 Laravel 中的编辑表单上获取选定选项

    我的网站订单有一个可编辑的表单 并且有以下字段 User quantity note status 我在此表单中还有其他选项 但只有这些字段对我来说很重要 以便能够获取默认值 例如 我希望能够查看用户默认订购的数量 然后我可以更改它或保留它
  • 检查字符串是否是哈希值

    我正在使用 SHA 512 来散列我的密码 当然还有盐 我认为我想要的不可能 但无论如何我们还是要问一下 有没有办法检查字符串是否已经是 SHA 512 或其他算法 哈希值 当用户登录时 我想检查他的密码 如果它仍然是纯文本 则应将其转换为
  • Cakedc.users => 总是重定向到主页

    我在新的 Cakephp 安装上使用插件 CakeDC Users 我有两个控制器 PagesController php CardsController php Pages 有 1 个操作 Beta 它是主页 Cards 有两个操作 索引
  • 从 php 到 JavaScript 的数组

    我正在尝试使用 json 将数组列表从 php 传输到 javascript 但它不起作用 JS ajax url getProfilePhotos php type post post or get method data if you
  • 显示和随机化 php 数组

    我有一个显示结果的数组 如下所示 Array 0 gt 71 1 gt 56 2 gt 64 3 gt 82 4 gt 90 5 gt 80 6 gt 65 7 gt 62 8 gt 14 9 gt 3 我的代码是 while row my
  • 从 php 执行 bash 脚本并立即输出回网页

    我有一组 bash 和 Perl 脚本 开发在 Linux Box 上部署所需的目录结构 可选 从svn导出代码 从这个源构建一个包 这在终端上运行良好 现在 我的客户请求此流程的 Web 界面 例如 某些页面上的 创建新包 按钮将一一调用
  • 付款成功后保存到数据库(paypal)

    我试图找出在客户使用 paypal 支付商品费用后将数据 之前以表单提交 保存到数据库的最佳方法 沿着这个过程的一些事情 1 在实际网站上填写表格 gt 2 登录 Paypal gt 3 立即付款 PayPal gt 4 数据已插入数据库
  • PHP Intl 扩展线程安全吗?

    我一直在阅读有关 PHP 中的语言环境的内容 看起来setlocale 线程有问题 我对线程不太熟悉 文档提到它不是线程安全的 我想让我的项目能够处理某些数字格式 并且 Intl 扩展似乎很有趣 http php net manual en
  • php date_parse("2010 年 2 月") 给出日期 == 1

    当没有日期时 我将其称为 date parse 中的错误 d date parse Feb 2010 会给 d day 1 请参阅对此的评论date parse 手册页 http php net manual en function dat
  • 在 PHP 中接受带有小数点和千位分隔符的国际数字

    对于用户可以输入能量值来计算相应费用的在线计算器 我需要 PHP 脚本来接受各种用户输入 200 万又四分之一焦耳 的值可以输入为 2000000 25 默认表示法 2 000 000 25 带千位分隔符 2000000 25 逗号作为小数
  • 点击 %40 变为 %2540

    当单击包含 符号的链接时 该网址给我 40 这就是我想要的 但是一旦我点击它 一秒钟后它就在我点击后变成了 2540 单击是在电子邮件内 然后定向到网站 其中 40 更改为 2540 我怎样才能让它停止变化 它现在得到这样的参数 email
  • 我可以让 swagger-php 在查询字符串上使用数组吗?

    我使用 Swagger php 当我定义查询字符串上的参数时 它可以是一个数组 但据我所知 它不支持这种查询字符串 https api domain tld v1 objects q 1 q 5 q 12 我相信这会被设定in the co

随机推荐