it-swarm.com.de

Richtig bootstrap drupal für Standalone PHP Datei?

Das habe ich gerade:

<?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();
?>

Ich erhalte eine Reihe von Fehlern von oben, wenn ich eigenständig ausgeführt werde. Funktioniert gut in meinem Modul. Einige der Fehler sind:

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).
16
Joren

Der mit Abstand einfachste Weg, das bootstrap] zu verwalten, ist die Verwendung von drush php-script , alias scr.

file.php:

<?php
echo l('Link', 'path');

Cli:

drush @alias scr file.php

Ausgabe:

<a href="/path">Link</a>

Auf diese Weise müssen Sie mit nichts in Bezug auf den Bootstrap umgehen. Drush löst ihn vollständig für Sie und bietet Ihnen die Möglichkeit, ihn dank Aliasnamen problemlos über Websites hinweg zu verwenden. (Könnte sogar an entfernten Standorten funktionieren, obwohl ich das nicht ausprobiert habe)

14
Letharion

ihr Standalone Drupal 7 bootstrap ist nicht ganz richtig.

Versuche dies:

/**
 * 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

Hoffe das hilft.

11

das ist genug:

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);
3
Matoeil

Der letzte Fehler

Warnung: include_once (sites/all/modules/views_bulk_operations/action/archive.action.inc): Stream konnte nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis in views_bulk_operations_load_action_includes () (Zeile 56 von/var/www/clients/client1/web15/web/sites/all/modules/views_bulk_operations/views_bulk_operations.module).

ist ein Fehler in VBO. views_bulk_operations_load_action_includes () verwendet DRUPAL_ROOT nicht, wenn include_once verwendet wird. Ich würde einen Fehler melden und ihn in VBO beheben.

Der andere Fehler (die 2 stehen in Beziehung zueinander) hängt möglicherweise mit _ system_rebuild_module_data () zusammen, der DRUPAL_ROOT beim Zugriff auf die .info-Datei des Moduls nicht verwendet. Ich würde Haltepunkte in system_rebuild_module_data () für die Variable $ modules setzen und sehen, ob Sie sie genau bestimmen können. Melden Sie erneut einen Fehler mit drupal core), da ich dieses Problem nicht in der Problemwarteschlange sehe.

Viel Glück!

0
mikeytown2