Добрый вечер,
возникла следующая необходимость: уметь создавать ноды через консоль из стороннего скрипта.
Поскребя по форумам нашел следующее решение:
login.php
// ...что-нибудь делаем
include('./includes/bootstrap.inc');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
user_authenticate(array('name' => 'admin', 'pass' => '*****'));
// ...теперь мы залогинены на сайте, можно делать что-нибудь ещё
?>
вызвав его через консольку
php login.php
получил следующий ответ:
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="/./misc/favicon.ico" type="image/x-icon" />
<title>Site off-line | Drupal</title>
<link type="text/css" rel="stylesheet" media="all" href="/./modules/system/defaults.css?0" />
<link type="text/css" rel="stylesheet" media="all" href="/./modules/system/system.css?0" />
<link type="text/css" rel="stylesheet" media="all" href="/./modules/system/system-menus.css?0" />
<link type="text/css" rel="stylesheet" media="all" href="/./modules/system/maintenance.css?0" />
<link type="text/css" rel="stylesheet" media="all" href="/./themes/garland/style.css?0" />
<link type="text/css" rel="stylesheet" media="all" href="/./themes/garland/minnelli/minnelli.css?0" />
<link type="text/css" rel="stylesheet" media="print" href="/./themes/garland/print.css?0" />
<!--[if lt IE 7]>
<link type="text/css" rel="stylesheet" media="all" href="/./themes/garland/fix-ie.css" /> <![endif]-->
</head>
<body>
<!-- Layout -->
<div id="header-region" class="clear-block"></div>
<div id="wrapper">
<div id="container" class="clear-block">...
т.е. код страницы "Сайт на техобслуживании". Сам файл находится в корне.
Куда дальше копать для решения проблемы?
Комментарии
Нафига авторизовываться?
$node->uid = 12345466;
профит
Даже если без авторизации, вот такой вот скрипт все равно выдает код maintenance page
include('./includes/bootstrap.inc');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
?>
потому что не определена масса нужных переменных.
Для "поржать" откройте ваш скрипт через браузер из корня drupal, все будет ок.
Старость, не помню уже все, но вроде так:
<?php
$_SERVER['HTTP_HOST'] = 'default';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['SERVER_SOFTWARE'] = 'ЫЫ';
$_SERVER['REQUEST_METHOD'] = 'GET';
$_SERVER['QUERY_STRING'] = '';
$_SERVER['PHP_SELF'] = $_SERVER['REQUEST_URI'] = '/';
include(
'./includes/bootstrap.inc');drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); ?>
Через браузер-то заходит, это все понятно.
Нужен рецепт, чтобы аналогично запускать его через консольку.
Определение указанных переменных результат не изменило.
так а может у Вас сайты в мультисайтинге пашут а default ненастроен?
хотя это относится только к index.php а если файл указаным кодом то должна быть просто пустая страница но не как не маинтенс.
нет, мультисайтинга нет. Всего один хост.
Вот этот вот maintenance page и сбивает с толку.
Совет в топике помнится из моего блога. Этот код гарантированно работает на D6. См. настройки PHP для CLI. Если просто вызвать из корня сайта в командной строке index.php, выдаёт страницу друпала или тоже страницу обслуживания? Если второе, см. подключён ли для CLI драйвер СУБД, может ещё какие отличия в конфигах PHP для вебсервера и для CLI.
Через браузер все открывает как надо - код выполняется верно и с авторизацией и без.
CLI есть:
PHP 5.1.6 (cli) (built: Sep 30 2008 14:25:04)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
как посмотреть его конфиг на предмет отличий от CGI? Или пора уже в техподдержку писать?
$ php -info
Про CLI там вообще никаких разделов нет, а _SERVER и _ENV по своим значениям идентичны.
там есть про конфиг который загружен, нужно искать строки типа:
для php(cli):
...
Scan this dir for additional .ini files => /etc/php5/cli/conf.d
для php-cgi
...
<tr><td class="e">Scan this dir for additional .ini files </td><td class="v">/etc/php5/cgi/conf.d </td></tr>
Потом по этим путям открыть конфиги и сравнить по подключенным расширениям.
Очень похоже что не включен Mysql(с его производными), больше вариантов с майнтенсом нет.