Логин через сторонний скрипт в консоли

Главные вкладки

Аватар пользователя paladin.on paladin.on 28 сентября 2010 в 21:43

Добрый вечер,

возникла следующая необходимость: уметь создавать ноды через консоль из стороннего скрипта.
Поскребя по форумам нашел следующее решение:

login.php

<?php

// ...что-нибудь делаем

include('./includes/bootstrap.inc');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

user_authenticate(array('name' => 'admin', 'pass' => '*****'));

// ...теперь мы залогинены на сайте, можно делать что-нибудь ещё
?>

вызвав его через консольку
php login.php

получил следующий ответ:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "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">...

т.е. код страницы "Сайт на техобслуживании". Сам файл находится в корне.
Куда дальше копать для решения проблемы?

Комментарии

Аватар пользователя Vladimir_VVV Vladimir_VVV 28 сентября 2010 в 22:34

"paladin.on" wrote:
Даже если без авторизации, вот такой вот скрипт все равно выдает код maintenance page

потому что не определена масса нужных переменных.

Для "поржать" откройте ваш скрипт через браузер из корня 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);

?>
Аватар пользователя paladin.on paladin.on 28 сентября 2010 в 22:49

Через браузер-то заходит, это все понятно.
Нужен рецепт, чтобы аналогично запускать его через консольку.

"Vladimir_VVV" wrote:
потому что не определена масса нужных переменных.

Определение указанных переменных результат не изменило.

Аватар пользователя Vladimir_VVV Vladimir_VVV 28 сентября 2010 в 23:31

так а может у Вас сайты в мультисайтинге пашут а default ненастроен?
хотя это относится только к index.php а если файл указаным кодом то должна быть просто пустая страница но не как не маинтенс.

Аватар пользователя axel axel 29 сентября 2010 в 19:13

Совет в топике помнится из моего блога. Этот код гарантированно работает на D6. См. настройки PHP для CLI. Если просто вызвать из корня сайта в командной строке index.php, выдаёт страницу друпала или тоже страницу обслуживания? Если второе, см. подключён ли для CLI драйвер СУБД, может ещё какие отличия в конфигах PHP для вебсервера и для CLI.

Аватар пользователя paladin.on paladin.on 29 сентября 2010 в 22:29

Через браузер все открывает как надо - код выполняется верно и с авторизацией и без.
CLI есть:

php -v
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? Или пора уже в техподдержку писать?

Аватар пользователя axel axel 29 сентября 2010 в 22:30

paladin.on wrote:
как посмотреть его конфиг на предмет отличий от CGI? Или пора уже в техподдержку писать?

$ php -info

Аватар пользователя Vladimir_VVV Vladimir_VVV 30 сентября 2010 в 11:35

там есть про конфиг который загружен, нужно искать строки типа:
для php(cli):

Configuration File (php.ini) Path => /etc/php5/cli
...
Scan this dir for additional .ini files => /etc/php5/cli/conf.d

для php-cgi

<tr><td class="e">Configuration File (php.ini) Path </td><td class="v">/etc/php5/cgi </td></tr>
...
<tr><td class="e">Scan this dir for additional .ini files </td><td class="v">/etc/php5/cgi/conf.d </td></tr>

Потом по этим путям открыть конфиги и сравнить по подключенным расширениям.

"axel" wrote:
Если второе, см. подключён ли для CLI драйвер СУБД

Очень похоже что не включен Mysql(с его производными), больше вариантов с майнтенсом нет.