これは私が今持っているものです:
<?php
define('DRUPAL_ROOT', '/var/www/clients/client1/web15/web');
include_once(DRUPAL_ROOT . '/includes/bootstrap.inc');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
// drupal_flush_all_caches();
$users = views_get_view_result('userlist', 'uid_list');
$i = 0;
foreach ($users as $user) {
$filename = 'sites/default/files/generated_pdfs/individual_pdf_report_' . $user->uid . '.pdf';
generate_employee_pdf($user->uid, $filename);
error_log('Generated ' . $filepath);
$i++;
}
// create object
$Zip = new ZipArchive();
// open archive
if ($Zip->open("sites/default/files/generated_zips/individual-reports.Zip", ZIPARCHIVE::CREATE) !== TRUE) {
die ("Could not open archive");
}
// initialize an iterator
// pass it the directory to be processed
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("sites/default/files/generated_pdfs/"));
// iterate over the directory
// add each file found to the archive
foreach ($iterator as $key=>$value) {
$Zip->addFile(realpath($key), $value->getFilename()) or die ("ERROR: Could not add file: $key");
}
// close and save archive
$Zip->close();
?>
スタンドアロンで実行すると、上記のエラーがたくさん表示されます。私のモジュールでは問題なく動作します。エラーには次のものがあります。
Warning: Invalid argument supplied for foreach() in drupal_depth_first_search() (line 56 of /var/www/clients/client1/web15/web/includes/graph.inc).
Warning: Invalid argument supplied for foreach() in _module_build_dependencies() (line 229 of /var/www/clients/client1/web15/web/includes/module.inc).
Warning: include_once(sites/all/modules/views_bulk_operations/actions/archive.action.inc): failed to open stream: No such file or directory in views_bulk_operations_load_action_includes() (line 56 of /var/www/clients/client1/web15/web/sites/all/modules/views_bulk_operations/views_bulk_operations.module).
bootstrapを管理する最も簡単な方法は、 drush php-script 、エイリアスscrを使用することです。
file.php:
<?php
echo l('Link', 'path');
Cli:
drush @alias scr file.php
出力:
<a href="/path">Link</a>
この方法では、ブートストラップに関して何も処理する必要がありません。drushはそれを完全に解決し、エイリアスのおかげでサイト間で簡単に使用できるようにします。 (私はまだ試していませんが、リモートサイトでも動作する可能性があります)
スタンドアロンDrupal 7 bootstrapは正しくありません。
これを試して:
/**
* Do not let execute this file from http request
*/
if (isset($_SERVER['REMOTE_ADDR'])) {
print "...";
exit(1);
}
/**
* Initialize Drupal
*/
define('DRUPAL_ROOT', '/var/www/clients/client1/web15/web');
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
require_once DRUPAL_ROOT . '...'; // include required module files to work with here
drupal_override_server_variables(array('url' => 'http://www.example.com/batch.php')); // trick drupal to do bootstrap
drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);
set_time_limit(4600); // adjust for your needs
ini_set('memory_limit', '3524M'); // adjust for your needs
お役に立てれば。
これで十分です:
set_include_path(get_include_path() . PATH_SEPARATOR .'/path/to/drupal/root/');
define('DRUPAL_ROOT', '/path/to/drupal/root/');
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
最後のエラー
警告:include_once(sites/all/modules/views_bulk_operations/actions/archive.action.inc):ストリームを開けませんでした:views_bulk_operations_load_action_includes()にそのようなファイルまたはディレクトリはありません(/ var/www/clients/client1/web15 /の56行目) web/sites/all/modules/views_bulk_operations/views_bulk_operations.module)。
vBOのバグです。 views_bulk_operations_load_action_includes() include_onceの使用時にDRUPAL_ROOTを使用しません。バグを報告してVBOで修正します。
その他のエラー(2つは互いに関連しています)は、モジュール.infoファイルにアクセスするときに _ system_rebuild_module_data() がDRUPAL_ROOTを使用していないことに関連している可能性があります。 $ -modules変数のブレークポイントを system_rebuild_module_data() に入れて、ピンポイントで指定できるかどうかを確認します。もう一度、drupalコアでバグを報告してください。問題キューにこの問題が見当たらないためです。
幸運を!