Запустите код WordPress из командной строки через PHP - PullRequest
2 голосов
/ 03 марта 2011

Мне нужно запустить собственный скрипт WP из командной строки: php myscript.php Что бы я ни делал, это не работает. Я получаю это сообщение:

Ошибка при установлении соединения с базой данных

Я пытался

define('DOING_AJAX', true);
define('WP_USE_THEMES', false);
$_SERVER = array(
    "HTTP_HOST" => "mysite.com",
    "SERVER_NAME" => "mysite.com",
    "REQUEST_URI" => "/myscript.php",
    "REQUEST_METHOD" => "GET"
);
require_once('wp-load.php');

упомянул здесь , но это не работает. Все установленные мной серверные переменные в порядке, я скопировал всю переменную $ _SERVER с веб-страницы, запущенной в браузере (там это работает)

Мой рабочий каталог является корнем установки WP, поэтому я просто использую: php myscript.php из командной строки. Я попробовал несколько других кодов, упомянутых в сети, но ни один из них не работает для меня. например, с:

define('WP_USE_THEMES', false);
require('wp-blog-header.php');

Всегда одно и то же сообщение: Ошибка при установлении соединения с базой данных Как я уже сказал из веб-браузера, он работает нормально.

Это извлечение строк mysql из php.ini, используемых php cli:

Configure Command =>  '/var/tmp/apache_mod_php/apache_mod_php-53.3.1~2/php/configure'  '--prefix=/usr' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--disable-dependency-tracking' '--sysconfdir=/private/etc' '--with-apxs2=/usr/sbin/apxs' '--enable-cli' '--with-config-file-path=/etc' '--with-libxml-dir=/usr' '--with-openssl=/usr' '--with-kerberos=/usr' '--with-zlib=/usr' '--enable-bcmath' '--with-bz2=/usr' '--enable-calendar' '--with-curl=/usr' '--enable-exif' '--enable-ftp' '--with-gd' '--with-jpeg-dir=/BinaryCache/apache_mod_php/apache_mod_php-53.3.1~2/Root/usr/local' '--with-png-dir=/BinaryCache/apache_mod_php/apache_mod_php-53.3.1~2/Root/usr/local' '--enable-gd-native-ttf' '--with-ldap=/usr' '--with-ldap-sasl=/usr' '--enable-mbstring' '--enable-mbregex' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-mysql-sock=/var/mysql/mysql.sock' '--with-iodbc=/usr' '--enable-shmop' '--with-snmp=/usr' '--enable-soap' '--enable-sockets' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--with-xmlrpc' '--with-iconv-dir=/usr' '--with-xsl=/usr' '--enable-zend-multibyte' '--enable-zip' '--with-pcre-regex=/usr'
mysql
Client API version => mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $
mysql.allow_local_infile => On => On
mysql.allow_persistent => On => On
mysql.connect_timeout => 60 => 60
mysql.default_host => no value => no value
mysql.default_password => no value => no value
mysql.default_port => no value => no value
mysql.default_socket => /var/mysql/mysql.sock => /var/mysql/mysql.sock
mysql.default_user => no value => no value
mysql.max_links => Unlimited => Unlimited
mysql.max_persistent => Unlimited => Unlimited
mysql.trace_mode => Off => Off
mysqli
Client API library version => mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $
mysqli.allow_local_infile => On => On
mysqli.allow_persistent => On => On
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => /var/mysql/mysql.sock => /var/mysql/mysql.sock
mysqli.default_user => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.reconnect => Off => Off
mysqlnd
mysqlnd => enabled
Version => mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $
PDO drivers => mysql, sqlite, sqlite2
pdo_mysql
Client API version => mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $
pdo_mysql.default_socket => /var/mysql/mysql.sock => /var/mysql/mysql.sock

Ответы [ 3 ]

0 голосов
/ 03 марта 2011

Работает:

sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

Это неверный путь для сокета, используемого PHP CLI

0 голосов
/ 27 апреля 2012

Секрет в том, что вы определили те же имена для констант, которые использует WP. Поменяй DB_USER/DB_PASSWORD/DB_HOST и все будет хорошо: D (Боже, мне понадобилось два часа, чтобы найти «жука»)

ура! * * 1004

0 голосов
/ 03 марта 2011

Для такого рода проблем, первое, что нужно сделать:

  • проверьте журнал ошибок, чтобы получить больше информации об ошибке
  • проверьте php cli conf

И так как вы выполняете эту команду из локальной среды, ваш сервер mysql, вероятно, не принимает соединение извне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...