এমআইপিডিআরআইএস বুটস্ট্র্যাপ প্যারামিটার সিএলআইতে


11

ইন pub/index.php, "/ পাব" বাদ দিতে মিডিয়া এবং স্থিতিশীল সম্পদের জন্য URL গুলি পরিবর্তন করতে নিম্নলিখিত কোডটি ব্যবহৃত হয়:

$params[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS] = [
    DirectoryList::PUB => [DirectoryList::URL_PATH => ''],
    DirectoryList::MEDIA => [DirectoryList::URL_PATH => 'media'],
    DirectoryList::STATIC_VIEW => [DirectoryList::URL_PATH => 'static'],
    DirectoryList::UPLOAD => [DirectoryList::URL_PATH => 'media/upload'],
];
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);

দুর্ভাগ্যক্রমে সিএলআই স্ক্রিপ্টগুলিতে ( bin/magento) এর মতো কিছুই নেই।

আমি Magento\Setup\Mvc\Bootstrap\InitParamListenerনিম্নলিখিত কোড সহ ক্লাসটি পেয়েছি :

$initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
$directoryList = $this->createDirectoryList($initParams);

তবে আমি বুঝতে পারি না যে এই জেন্ডার সার্ভিস ম্যানেজার ডেটা পুনরুদ্ধার করে এবং কীভাবে এটি প্রভাবিত করা সম্ভব হতে পারে।

আমার কংক্রিট সমস্যাটি হ'ল কোনও সূচককে পুরো ইউআরএল তৈরি করতে হয় এবং বর্তমানে এটি পছন্দ করে http://magento.local/pub/media/..., যেখানে আমার এটি হওয়া দরকারhttp://magento.local/media/...

আমি কীভাবে সিএলআইকে বলতে পারি যে আমার ভার্চুয়াল হোস্টটি pubইউআরএল এর অংশ হওয়া উচিত নয় এবং "পাব" হওয়া উচিত?

আদর্শভাবে এটি অতিরিক্ত CLI পরামিতি বা পরিবেশের ভেরিয়েবলের উপর নির্ভর না করেই কাজ করা উচিত।


2
এই সম্প্রতি একটি বাগ হিসাবে রিপোর্ট করা হয়েছে github.com/magento/magento2/issues/8868
স্কট বুকানন

1
আমি দেখতে পেয়েছি যে আপনি এটির মতো একটি যুক্তি ব্যবহার করে সেট করতে পারেন --magento-init-params=MAGE_DIRS[media][uri]=media। এটি আসলে সমস্ত কমান্ডের জন্য কাজ করে (কোডের মাধ্যমে পদক্ষেপের মাধ্যমে স্পষ্ট হয়), তবে setup:নেমস্পেসের বাইরের কমান্ডগুলি ভুলভাবে একটি ত্রুটি দেয় যে বিকল্পটি বিদ্যমান নেই।
স্কট বুচানান

@ স্কটএসবি ঠিক যা প্রত্যাশা করছিলাম তা নয়, তবে একটি আকর্ষণীয় সন্ধান, এর জন্য ধন্যবাদ!
ফ্যাবিয়ান শেমংলার

উত্তর:


7

অনেক ট্র্যাভেল করার পরেও, আমি পরিবেশের ভেরিয়েবলগুলি ব্যবহার করে একটি সমাধান পেয়েছি, যা আমি জানি আপনি যা চেয়েছিলেন তা নয়। আপনি পরিবেশের ভেরিয়েবলগুলি এই জাতীয় ব্যবহার করে প্যারামিটার সেট করতে পারেন ( $APP_ROOTআপনার আসল ম্যাজেন্টো রুটের পরিবর্তে ):

env \
    "MAGE_DIRS[base][path]=$APP_ROOT" \
    "MAGE_DIRS[pub][uri]=" \
    "MAGE_DIRS[media][uri]=media" \
    "MAGE_DIRS[static][uri]=static" \
    "MAGE_DIRS[upload][uri]=media/upload" \
    bin/magento indexer:reindex

নোট করুন যে উপরের হিসাবে বেস পাথ নির্দিষ্ট করা প্রয়োজন কারণ আপনি যখন পরিবেশের ভেরিয়েবল ব্যবহার করেন, তখন আপনার MAGE_DIRSসংজ্ঞা প্রাথমিক ডিফল্টটিকে ওভাররাইট করে যা এতে অন্তর্ভুক্ত থাকে। এটি তবে পূর্ণ ডিফল্ট কনফিগারেশনে মেশানো হবে \Magento\Framework\App\Filesystem\DirectoryList

আমাকে সুগন্ধে রাখার জন্য চিফ আর্কিটেক্ট নিজেই এই উত্তরটির কৃতিত্ব:

Magento এর "var" ডিরেক্টরিটিকে অন্য জায়গায় Magento 2 এ কীভাবে পরিবর্তন করবেন?


আপনি পরিবেশের পরিবর্তনশীল কীভাবে ব্যবহার করবেন? এগুলি কি রেফারেন্সড উত্তরের মতো ভিএইচএসটিতে যুক্ত হচ্ছে?
হ্যারি

@harri আমি আপনার প্রশ্ন বুঝতে পারি না। যেহেতু এটি কোনও সি এল আই কমান্ড সম্পর্কে কথা বলছে, ওয়েব সার্ভার জড়িত না হওয়ায় একটি ভোস্ট প্রাসঙ্গিক নয়। পরিবেশক ভেরিয়েবলগুলি চিত্রিত হিসাবে ঠিক কমান্ড লাইনেই পাস করা হবে ( এক্ষেত্রে কমান্ডের জন্য পরিবেশের ভেরিয়েবল হিসাবে envবিন্যাসে আর্গুমেন্ট FOO=barসেট করা হবে bin/magento)।
স্কট বুচানান

আহা, আমি ক্রোন দিয়ে চালিত একটি পদ্ধতি নিয়ে এই সমস্যাটি পাচ্ছি তাই নিশ্চিত না যে আমার বিন / ম্যাজেন্টো ক্রোন দিয়ে এটি চালানোর কোনও উপায় আছে কিনা: ক্রোনটব চালাবেন?
হারি

শুধু কি আমি উত্তর আছে নিতে এবং প্রতিস্থাপন indexer:reindexসঙ্গে cron:run(খুব অবশ্যই এবং এখনও আপডেট $ APP_ROOT)। তারপরে সেই পুরো জিনিসটি ক্রোনটবে ফেলে দিন। নিশ্চিত নয় যে ক্রন্টাটব নতুনলাইনগুলি পছন্দ করবে কিনা, তাই আপনি কেবল তাদের স্থানগুলি স্থান পরিবর্তন করতে পারেন (সেক্ষেত্রে পিছনের পিছনের দিকটি সরিয়ে ফেলুন)।
স্কট বুচানান

আমি মনে করি আরও ভাল সমাধানটি এখানে রয়েছে magento.stackexchange.com/a/174503/41325
ম্যাকসিমিউক

6

আরেকটি, সহজ বিকল্পটি স্টোর> কনফিগারেশন> ওয়েব এর অধীনে স্টোর কনফিগারেশনের মিডিয়া পাথটিকে কেবল হার্ড-কোড করা:

{{unsecure_base_url}}media/

এবং

{{secure_base_url}}media/

Https://github.com/magento/magento2/issues/9111#issuecomment-292002922- এর জন্য credit


2

আমি MAGE_DIRSসিএলআইয়ের মাধ্যমে সেট করার অন্য একটি উপায় খুঁজে পেয়েছি , কেবল অনুলিপি করুন

/vendor/magento/framework/App/Filesystem/DirectoryList.php

প্রতি

/lib/internal/Magento/Framework/App/Filesystem/DirectoryList.php 

এবং এখন আপনি সমস্ত অভ্যন্তরীণ ফাইলের ডিফল্ট ডিরেক্টরি পরিবর্তন করতে পারেন।


THX এটি আমাকে
ক্লিপ

আসলে আমি বিশ্বাস করি এটিই এই সমস্যার সেরা সমাধান। অফিসিয়াল ম্যাজেন্টো গাইড মূলটি কাস্টমাইজ করতে / lib / অভ্যন্তরীণ ব্যবহার করার পরামর্শ দেয়। devdocs.magento.com/guides/v2.3/architecture/archi_perscreens/…
ম্যাক্সেমিক

1
@ এ। ম্যাকসিমিউক আমি বিশ্বাস করি আপনি সেই পৃষ্ঠাটি ভুল বুঝছেন। এটি লক্ষণীয় যে সেখানকার কোডটি এক্সটেনশন বিকাশকারীদের জন্য কার্যকর হতে পারে তবে এটি সরাসরি সেখানে কাস্টমাইজ করার পরামর্শ দিচ্ছে না । পৃষ্ঠার আগে এটি বলে: "আপনার ফ্রেমওয়ার্ক ফাইলগুলি কখনই সংশোধন করা উচিত নয়, যদিও আপনি যদি ম্যাগেন্টো প্রসারিত করছেন তবে ফ্রেমওয়ার্ক লাইব্রেরিগুলিকে কীভাবে কল করবেন তা আপনার অবশ্যই জানা উচিত" "
স্কট বুচানান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.