自定义 Drupal bootstrap 使用文件-API
Custom Drupal bootstrap using file-API
我正在使用单个 php 文件 Drupal bootstrap 生成独立的 cronjob PHP 文件。
这是我的设置(文件位于子文件夹中,这就是为什么我必须像这样建立基本路径)
/**
* Drupal bootstrap
*/
$path = str_replace("sites/all/modules/custom/my_module/cron",
"", DIRNAME(__FILE__));
define('DRUPAL_ROOT', $path);
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
//require_once DRUPAL_ROOT . '/includes/common.inc';
//require_once DRUPAL_ROOT . '/includes/module.inc';
//require_once DRUPAL_ROOT . '/includes/unicode.inc';
//require_once DRUPAL_ROOT . '/includes/file.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
每当我尝试使用像
这样的基于文件的函数时
$wrapper = file_stream_wrapper_get_instance_by_uri('public://mypath');
$wrapper->realpath();
或
drupal_realpath('public://mypath');
结果总是
bool FALSE
你知道我的自定义 bootstrap 文件操作不起作用吗?
谢谢
同时我找到了解决方案。
所有文件路径都在 Drupal 内部相对处理。
每当您在不位于 ROOT 目录的文件中使用某些 Drupal bootstrap 时,请确保使用:
chdir(DRUPAL_ROOT);
就在您的函数调用之前。
我正在使用单个 php 文件 Drupal bootstrap 生成独立的 cronjob PHP 文件。
这是我的设置(文件位于子文件夹中,这就是为什么我必须像这样建立基本路径)
/**
* Drupal bootstrap
*/
$path = str_replace("sites/all/modules/custom/my_module/cron",
"", DIRNAME(__FILE__));
define('DRUPAL_ROOT', $path);
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
//require_once DRUPAL_ROOT . '/includes/common.inc';
//require_once DRUPAL_ROOT . '/includes/module.inc';
//require_once DRUPAL_ROOT . '/includes/unicode.inc';
//require_once DRUPAL_ROOT . '/includes/file.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
每当我尝试使用像
这样的基于文件的函数时$wrapper = file_stream_wrapper_get_instance_by_uri('public://mypath');
$wrapper->realpath();
或
drupal_realpath('public://mypath');
结果总是
bool FALSE
你知道我的自定义 bootstrap 文件操作不起作用吗?
谢谢
同时我找到了解决方案。
所有文件路径都在 Drupal 内部相对处理。
每当您在不位于 ROOT 目录的文件中使用某些 Drupal bootstrap 时,请确保使用:
chdir(DRUPAL_ROOT);
就在您的函数调用之前。