একক পিএইচপি ফাইলের জন্য সঠিকভাবে বুটস্ট্র্যাপ ড্রুপাল?


16

এই মুহুর্তে আমার যা আছে:

<?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).

1
আপনি যদি একটি সম্পূর্ণ বুটস্ট্র্যাপ করেন তবে স্ট্যান্ডেলোন পিএইচপি ফাইলের বিন্দুটি কী?
googletorp

2
@ গুগলটর্প, আমি যখন অ্যাপাচি অ্যাক্সেস নিয়ন্ত্রণ চাই এবং ড্রুপাল ক্রোন প্রক্রিয়া থেকে দূরে থাকতে চাই, তখন ক্রন্টাবের মাধ্যমে জিনিসগুলি সময় নির্ধারণের জন্য আমি সময়ে সময়ে এটি ব্যবহার করি। যদিও আমি যুক্ত করব, একটি সঠিক হুক_মেনু () প্রবেশ বা একটি ড্রাশ কমান্ড ব্যবহার করা বেশিরভাগ পরিস্থিতিতে সাধারণত ভাল ধারণা।
এমপিডোনাদিও

1
এই ধরণের কার্যকারিতাটি কাজে লাগানোর জন্য বাইরে বেশ কয়েকটি বাহ্যিক পিএইচপি ফাইলগুলির সাথে এখনই কোনও সাইটে কাজ করা। আমি সম্প্রতি এই পাওয়া যায় নি, হয়তো এটা সহায়তা করবে: interworks.com/blogs/jkhalaj/2012/05/01/how-bootstrap-drupal
fndtn357

আপনি ড্রাশ এসআরসি কমান্ডের সাহায্যে ড্রুপাল বুটস্ট্র্যাপ করতে পারেন এখানে কয়েকটি ব্যাখ্যা রয়েছে: oliverdavies.co.uk/blog/2013/11/dont-bootstrap-drupal-use-drush
ya.teck

উত্তর:


14

বুটস্ট্র্যাপ পরিচালনা করার সবচেয়ে সহজ উপায় হ'ল ড্রশ পিএইচপি-স্ক্রিপ্ট , ওরফে এসসিআর ব্যবহার করা ।

file.php:

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

CLI:

drush @alias scr file.php

আউটপুট:

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

এইভাবে আপনাকে বুটস্ট্র্যাপ সম্পর্কিত কোনও বিষয়ই মোকাবেলা করতে হবে না, ড্রাশ এটি সম্পূর্ণরূপে আপনার জন্য সমাধান করবে, এবং আপনাকে এ্যালিয়াসের জন্য ধন্যবাদ সাইটের জন্য সহজেই এটি ব্যবহার করার ক্ষমতা দেয়। (এমনকি দুর্গম সাইটগুলিতেও কাজ করতে পারে, যদিও আমি এটি চেষ্টা করি নি)


আপনি যদি কোনও দূরবর্তী সাইটে এটি করতে চান তবে স্ক্রিপ্টটি দূরবর্তী হতে হবে (দেখুন drupal.stackexchange.com/questions/98098 )। যদি আমি কখনই ফ্রি সময় পাই (হা!) এর জন্য একটি প্যাচ চেষ্টা করব try
এমপিডোনাদিও

এটি করার পক্ষে এটি সহজতম উপায় এবং আরও বেশি উত্সাহ পাওয়া উচিত।
বালা ক্লার্ক

ঠিক কী @aliasকরার কথা? আমি কেবল একটি Could not find the alias @alias। দুর্ভাগ্যক্রমে আপনার সরবরাহিত লিঙ্কটি ভেঙে গেছে। আপনি কি এটি ঠিক করতে এবং আপনার ব্যাখ্যা প্রসারিত করতে পারেন?
লেইম্যানেক্স

@leymannx আরে, দুঃখিত আমি আপনার প্রশ্নটি আগে দেখিনি। আমি ডকুমেন্টেশনের লিঙ্কটি আপডেট করেছি। তবে আমি ওরফেয়ার অংশটি প্রসারিত করিনি, কারণ ড্রশ আলেখ্যগুলি এই নির্দিষ্ট প্রশ্নের পক্ষে সত্যই সুযোগের বাইরে রয়েছে।
লেটারিয়ান

11

আপনার স্ট্যান্ডেলোন ড্রুপাল 7 বুটস্ট্র্যাপ একেবারেই ঠিক নয়।

এটা চেষ্টা কর:

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

আশাকরি এটা সাহায্য করবে.


হুম। এটি এই লাইনে নিঃশব্দে ব্যর্থ হচ্ছে: $ ব্যবহারকারীরা = দর্শন_জেট_ভিউ_রেসাল্ট ('ব্যবহারকারী তালিকা', 'uid_list'); আমি কি ঠিক করেছি যে আপনার drupal_override_server_variables কলটি আমার পিএইচপি ফাইলের অবস্থান নির্দেশ করবে?
জোরেেন

হ্যাঁ তুমি ঠিক. এই বুটস্ট্র্যাপটি কেবল ডাটাবেস স্তর লোড করে তবে মডিউলগুলি নয়। এটির কার্যকারিতাটি ব্যবহার করার জন্য আপনাকে মডিউল require_once DRUPAL_ROOT . '...'; // include required module files to work with here
থ্রি হুকের আবেদন

আমি কমন.ইনক, ভিউজ.মডিউল এবং সিটিউলস.মডিউলকে ত্রুটি হিসাবে চিহ্নিত করেছি যে এটি প্রয়োজনীয় ছিল obvious এই 3 এর পরে আমি ত্রুটিগুলি পাওয়া বন্ধ করে দিয়েছিলাম এবং এটি নিঃশব্দে মারা যায়। এখান থেকে যেতে যেখানে নিশ্চিত নন।
জোড়েন

প্রতিটি অন্তর্ভুক্তির পরে মুদ্রণগুলি করুন এবং দেখুন এটি কোথায় আটকেছে। তারপরে আপনি বুঝতে পারবেন কী ভুল। একটি বিকল্প হিসাবে, পুরো বুটস্ট্র্যাপ করার চেষ্টা করুন এবং দেখুন কী ঘটে।
জাইড্রুনাস তামাসৌসকাস

2

এটা যথেষ্ট:

define('DRUPAL_ROOT', '/path/to/drupal/root/');
 require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

0

শেষ ত্রুটি

সতর্কতা: অন্তর্ভুক্ত_অনসেস (সাইটগুলি / সমস্ত / মডিউল / ভিউ_বুলক_অপশন / ক্রিয়া / আর্কাইভ.অ্যাকশন.ইনক): স্ট্রিমটি খুলতে ব্যর্থ: ভিউ_বুলক_অপারেশন_লোড_অ্যাকশন_ইনক্লাইডে () / ভিআর / www / ক্লায়েন্ট / ক্লায়েন্ট 1 / ওয়েব 15 / এর লাইন 56 ওয়েব / সাইট / সব / মডিউল / views_bulk_operations / views_bulk_operations.module)।

ভিবিওতে একটি বাগ। ভিউ_বুলক_অপারেশন_লোড_অ্যাকশন_সামগ্রী () অন্তর্ভুক্ত_ও ব্যবহার করার সময় DRUPAL_ROOT ব্যবহার করে না। আমি একটি বাগ ফাইল করব এবং এটি ভিবিওতে ঠিক করব।

অন্য ত্রুটি (2 টি একে অপরের সাথে সম্পর্কিত ) _ সিস্টেমে_রেবিল্ড_মডিউল_ডেটা সম্পর্কিত হতে পারে () মডিউল .আইনফো ফাইল অ্যাক্সেস করার সময় DRUPAL_ROOT ব্যবহার না করে। আমি _ মডিউল ভেরিয়েবলের জন্য system_rebuild_module_data () এ ব্রেক পয়েন্ট রাখব এবং আপনি এটি পিন করতে পারবেন কিনা তা দেখতে চাই। আর একবার ড্রুপাল কোর সহ একটি বাগ ফাইল করুন কারণ আমি ইস্যু সারিটিতে এই সমস্যাটি দেখতে পাচ্ছি না।

শুভকামনা!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.