Проблемы с вручную wp_install ()

Я пытаюсь автоматически установить дистрибутив WordPress в 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); 

Когда я вручную запускаю 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 , кажется, что $ wp_rewrite пытается вызвать flush_rules (), когда $ wp_rewrite сам не существует.

Еще один странный поворот в том, что это практически тот же код, что и wordpress-cli-installer . Мой файл wp-config.php автоматически создается и готов.

Как выглядит код wordpress-cli-installer, но у меня нет?

РЕДАКТИРОВАТЬ:

После многих проб и ошибок я узнал, что мой код не работал, потому что он был определен и выполнен в функции. После того как я отделил код от функции и выполнил ее, она сработала. Однако возникает другой вопрос. Возможно ли даже выполнить вышеуказанный код внутри функции? Я попытался использовать $GLOBALS += get_defined_vars(); взломать после операторов require_once , но это ничего не делает. Другими словами:

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