Подключить возможности db_select в php-файл

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

Аватар пользователя AndreyL AndreyL 20 ноября 2013 в 12:22

Подскажите, могу ли я в php-файл, в котором выполняется запрос, подключить возможности db_select и выполнять запрос через него?

Комментарии

Аватар пользователя drupby drupby 20 ноября 2013 в 12:32

http://oliverdavies.co.uk/blog/2013/11/don%E2%80%99t-bootstrap-drupal-us...
там описано 2 случая - с использованием drush и без

если нужно только работа с бд то вместо
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
можно написать
drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);

Аватар пользователя AndreyL AndreyL 20 ноября 2013 в 12:32

этот php-файл я сам написал, он в drupal не входит.
там - вызов запроса, который потом отображается пользователю.
в целях защиты файла, точнее безопасности выполнения запроса, хочется использовать db_select

в файле: получение двух переменных из url (методом get);
подключение к базе данных;
выполнение запроса и печать результатов запроса

Аватар пользователя enemis enemis 20 ноября 2013 в 12:44

Я использую такие файлы по крону и кладу их обычно в папочку /crons в корне сайта поэтому у меня такой код

chdir( dirname ( __FILE__ ) );
chdir('../');
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

//а дальше любые функции друпала

"drupby" wrote:
если нужно только работа с бд то вместо
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
можно написать
drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);

У друпала помоему 7 уровней бутстрапа, но мне к сожалению
неприходилось разбираться с ними. Поэтому плюсы и минусы использования
допустим DRUPAL_BOOTSTRAP_DATABASE рассказать не смогу.

Аватар пользователя AndreyL AndreyL 20 ноября 2013 в 12:57

Что-то не то получается...
Call to undefined function drupal_bootstrap()

ошибкку исправил, это я ошибся в путях там...
теперь: "На сайте произошла непредвиденная ошибка. Пожалуйста, повторите попытку позже."
И появился новый каталог sites в том, где я этот php-файл храню.

Аватар пользователя drupby drupby 20 ноября 2013 в 12:57

"AndreyL" wrote:
Что-то не то получается...
Call to undefined function drupal_bootstrap()

а где файл лежит?
/includes/bootstrap.inc не подключается

Аватар пользователя AndreyL AndreyL 20 ноября 2013 в 12:57

теперь: "На сайте произошла непредвиденная ошибка. Пожалуйста, повторите попытку позже."
И появился новый каталог sites в том, где я этот php-файл храню.

Аватар пользователя drupby drupby 20 ноября 2013 в 13:29

"AndreyL" wrote:
пути нормально прописываю...

как сказал бы Станиславский - не верю
напиши код как ты подключаешь бутстрап и где находится файл относительно корня друпала

Аватар пользователя AndreyL AndreyL 20 ноября 2013 в 13:31

я там в личку ошибку скинул. не знаю, м.б. это настройки сервера влияют... до этого-то я правильно прописывал пути - и все работало:) почему тут должен ошибиться... ну, это ладно, это житейское.

Аватар пользователя AndreyL AndreyL 20 ноября 2013 в 13:38

файл - в папке на один уровень от корня сайта.
include_once './includes/bootstrap.inc'; - так и подключаю.
а запрос не обрабатывается.
у меня до этого была проблемка с кодировкой. ее тут можно как-то указать?
а в ошибках так и остается сообщение, которое я в личке оставил.

сейчас полностью скину
[20-Nov-2013 09:36:15 UTC] PHP Warning: include_once(): Failed opening './includes/bootstrap.inc' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /*********/****/public_html/folder/****.php on line 4
[20-Nov-2013 09:36:15 UTC] PHP Fatal error: Call to undefined function drupal_bootstrap() in /*********/****/public_html/folder/***.php on line 5

Аватар пользователя drupby drupby 20 ноября 2013 в 13:52

"AndreyL" wrote:
файл - в папке на один уровень от корня сайта.

на уровень выше или ниже , если ниже то

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

ели же выше то в какой папке друпал лежит?
но примерно так

require_once '../drupal-dir/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
Аватар пользователя AndreyL AndreyL 20 ноября 2013 в 13:53

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

это как раз и выдает ошибку "На сайте произошла непредвиденная ошибка. Пожалуйста, повторите попытку позже."

Аватар пользователя drupby drupby 20 ноября 2013 в 14:29

ну так положи папку со скриптом тогда в в папку с друпалом - я же не экстрасенс и не знаю твою структуру папок , а сейчас получается гадание на гуще
неужели так сложно правильно прописать путь правильный видя структуру каталогов и файлов?
и если файл не в корне друпала то надо прописать
define('DRUPAL_ROOT', '/var/www/html/mydrupal/');

если же папка со скриптом находится внутри каталога с друпалом то код получится такой

chdir( dirname ( __FILE__ ) );
chdir('../');
define('DRUPAL_ROOT', getcwd());
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
Аватар пользователя AndreyL AndreyL 20 ноября 2013 в 15:05

все, это я виноват... на другом запросе проверял. все работает, спасибо!

chdir( dirname ( __FILE__ ) );
chdir('../');
define('DRUPAL_ROOT', getcwd());
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

да, так и надо было включать!

Аватар пользователя Chyvakoff Chyvakoff 20 ноября 2013 в 17:40

"AndreyL" wrote:
да, так и надо было включать!

Че за велосипед то?
Если файл лежит там же, где и index.php - то скопируй из него подтягивание ядра.

Аватар пользователя drupby drupby 20 ноября 2013 в 18:22

"Chyvakoff" wrote:
Че за велосипед то?
Если файл лежит там же, где и index.php - то скопируй из него подтягивание ядра.

но он то там не лежит
"AndreyL" wrote:

совсем не лежит:)

Chyvakoff тру программист - он умеет читать только код , а человеческие слова ему чужды ввиду своей бесполезности

Аватар пользователя Chyvakoff Chyvakoff 21 ноября 2013 в 9:18

"drupby" wrote:
а человеческие слова ему чужды ввиду своей бесполезности

С этим никак нельзя не согласиться.
Увы и ах...