ฉันจะตั้งค่าโหมดผู้พัฒนาได้อย่างไรใน Magento 2


44

ฉันกำลังพยายามติดตั้ง Magento 2 แต่ฉันได้รับข้อผิดพลาดดังต่อไปนี้:

เกิดข้อผิดพลาดระหว่างการเรียกใช้แอปพลิเคชัน ไม่สามารถเขียนข้อความแสดงข้อผิดพลาดเพื่อเข้าสู่ระบบ โปรดใช้โหมดนักพัฒนาซอฟต์แวร์เพื่อดูข้อความ

ฉันได้พยายามเพิ่มSetEnv MAGE_MODE developerเพื่อ.htaccessเป็นคำแนะนำจากอลันพายุ http://magento-quickies.alanstorm.com/post/58757471044/magento-2-developer-modeแต่ไม่มีโชค


คุณใช้ apache หรือ nginx อยู่หรือเปล่า? คุณตั้งค่าตัวแปรสภาพแวดล้อมได้อย่างไร?
user487772

@Tim ฉันใช้ Apache ฉันตั้งค่าโดยเพิ่มลงในส่วนบนของ. htaccess
Paul Donnelly

กำลังเพิ่มอะไร โปรดเพิ่มข้อมูลทั้งหมดนี้ลงในคำถามของคุณ
user487772

คุณจะต้องmod_envเปิดใช้งาน Apache และAllowOverride Onในการกำหนดค่า vhost ของคุณเพื่อ.htaccessให้สามารถแยกวิเคราะห์ได้
benmarks

คำตอบ:



30

อีกวิธีหนึ่งเราสามารถเปิดใช้งานโหมดผู้พัฒนา

  • ไปที่app/etc/และเปิดenv.php
  • และเปลี่ยนโหมดแอปพลิเคชั่นปัจจุบันMAGE_MODE' => 'default' ไปเป็นMAGE_MODE' => 'developer'

จากนั้นโปรดล้างแคช


18

ในขณะที่คุณและคนอื่น ๆ ได้สังเกต:

SetEnv MAGE_MODE "developer"

ในไฟล์. htaccess ของคุณควรเปิดใช้งานโหมดผู้พัฒนาโดยสมมติว่าAllowOverride Allอยู่ใน<Directory>คำสั่งที่เหมาะสม

เกี่ยวข้องกับปัญหาดั้งเดิมของคุณ แต่อาจเกิดจากปัญหาการอนุญาตที่ผู้ใช้กระบวนการ Apache ไม่มีสิทธิ์ในการเขียนไปยังไดเรกทอรีที่ถูกต้อง

สำหรับการทดสอบอย่างรวดเร็วคุณสามารถทำสิ่งต่อไปนี้ในไดเรกทอรี Magento 2 ของคุณ:

chmod -R a+wX var
chmod -R a+wX app/etc
chmod -R a+wX pub

จากนั้นหากวิซาร์ดการติดตั้งปรากฏขึ้นคุณสามารถลองให้แน่ใจว่าคุณมีสิทธิ์ที่ถูกต้องสำหรับกระบวนการ Apache ของคุณในไดเรกทอรีเหล่านั้น


1
bin/magentoในขณะที่มันยังคงเป็นไปได้ที่จะแทนที่โหมดโดยใช้ตัวแปรสภาพแวดล้อมวิธีการที่ต้องการอยู่ในขณะนี้กับการใช้งาน ดูdevdocs.magento.com/guides/v2.0/config-guide/bootstrap/ …และdevdocs.magento.com/guides/v2.0/config-guide/cli/…
Fabian Schmengler

8

คุณใช้ mod_fastcgi + php-fpm หรือไม่ ฉันพบปัญหานี้ในสภาพแวดล้อมนั้น ตัวแปรสภาพแวดล้อมได้รับการขึ้นต้นด้วย "REDIRECT_"

คำถามที่เกี่ยวข้องกับการแลกเปลี่ยนสแต็คที่นี่: Apache SetEnv prepends REDIRECT_ สิ่งที่ช่วยให้?

ฉันสามารถแก้ไขปัญหานี้ได้โดยเพียงแค่ตั้งค่าตัวแปรสภาพแวดล้อมในไฟล์กำหนดค่าพูล php-fpm:

env[MAGE_MODE] = developer

8

ในการเปลี่ยนโหมด magento 2.0 คุณต้องเรียกใช้คำสั่งนี้php bin/magento deploy:mode:set developerใน CMD หรือหน้าต่าง SSH ของคุณไปยังโฟลเดอร์ root magento 2.0 ข้อมูลเพิ่มเติมที่คุณสามารถหาได้ที่นี่และที่นี่


5

ไปที่โฟลเดอร์ root ของวีโอไอพีจากพรอมต์คำสั่งและดำเนินการด้านล่าง comand:

php bin/magento deploy:mode:set developer


4

หากคุณใช้เว็บเซิร์ฟเวอร์ในตัวใน PHP 5.4 คุณต้องตั้งค่า ENV เมื่อเริ่มต้นเซิร์ฟเวอร์:

MAGE_MODE=developer php -d variables_order=EGPCS -S 127.0.0.1:8080 router.php

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้เว็บเซิร์ฟเวอร์ในตัวของ PHP 5.4 รวมถึงการตั้งค่า Magento 2 ดูหน้าจอ screencast นี้:

http://quick.as/kkbahnlx


4

โปรดลองโดยเพิ่มบรรทัดต่อไปนี้ภายใน index.php ที่ไฟล์เริ่มต้น

$_SERVER['MAGE_MODE'] = 'developer';

หวังว่าคุณจะเห็นข้อความแสดงข้อผิดพลาด


4
ฉันขอแนะนำให้แก้ไขไฟล์หลักเช่นindex.php
7ochem

1
ฉันเชื่อว่าสิ่งนี้ควรจะไม่ได้รับการซื้อคืนด้วยวิธีใดวิธีหนึ่งดังนั้นเมื่อคุณเปลี่ยนในท้องถิ่นแล้วจะไม่ทำอะไรเลวร้ายเกินไป
Maciej Paprocki

4

สวัสดีฉันได้อ่านคำถามของคุณแล้วและโปรดดูวิธีแก้ปัญหา

คุณสามารถตั้งค่าโหมดผู้พัฒนาโดยคำสั่ง CLI และด้วยตนเอง

วิธีตั้งค่าด้วยตนเอง:

เปิดไดเรกทอรีรากวีโอไอพี 2 เปิดไฟล์ของคุณและการค้นหา"/app/etc/env.php" "'MAGE_MODE' =>"คุณสามารถเปลี่ยนโหมด magento ได้ที่นี่ด้วยตนเอง

คำสั่ง CLI สำหรับโหมดการผลิต:

magento deploy:mode:set production

คำสั่ง CLI สำหรับโหมดผู้พัฒนา:

magento deploy:mode:set developer

สำหรับข้อมูลเพิ่มเติมกรุณาเยี่ยมชม URL ด้านล่าง http://php-scripts-form.blogspot.nl/2017/09/magento-2-how-to-set-production-mode.html


ฉันจะดูโหมดก่อนที่จะเปลี่ยนได้อย่างไร
Razvan Zamfir

@RazvanZamfir คุณสามารถใช้deploy:mode:showเพื่อดูโหมดปัจจุบัน
Eric Seastrand

3

หากคุณใช้ NginX เป็นเว็บเซิร์ฟเวอร์ ... .htaccess จะไม่ส่งผลกระทบ การเปลี่ยนคำสั่งเซิร์ฟเวอร์ NginX จะเปิดใช้งานโหมดผู้พัฒนา

ตัวอย่างเช่น: /etc/nginx/sites-available/m2_test.conf(สมมติว่า nginx ได้รับการกำหนดค่าอย่างเหมาะสม)

server {
   listen 80;
   server_name m2.test.com;
   set $MAGE_ROOT path/to/magento2;
   set $MAGE_MODE developer;
   include other/configurations/file.conf;
}

ชุดนี้$ MAGE_MODEจะเปิดโหมดนักพัฒนาซอฟต์แวร์

อื่น ๆ / การกำหนดค่า / file.confควรเชื่อมโยงไปยังเส้นทางของไฟล์การกำหนดค่าซึ่งควรจะเป็นสำเนา[MAGENTO_DOC_ROOT]/nginx.conf.sample

ตามที่คนอื่น ๆ ได้กล่าวถึงphp bin/magento deploy:mode:set developerก็จะเปิดใช้งานได้


มี i เพื่อตั้งโหมดผู้พัฒนาทั้ง nginx conf และจาก magento console? จะเกิดอะไรขึ้นหากมีผู้พัฒนาและผู้ผลิตหนึ่งคน
LucScu

3

เมื่อคุณเปลี่ยนจากโหมดการผลิตเป็นโหมดผู้พัฒนาคุณควรล้างคลาสที่สร้างและเอนทิตี Object Manager เช่นพร็อกซีเพื่อป้องกันข้อผิดพลาดที่ไม่คาดคิด หลังจากทำเช่นนั้นคุณสามารถเปลี่ยนโหมด ใช้ขั้นตอนต่อไปนี้:

  1. หากคุณเปลี่ยนจากโหมดการผลิตเป็นโหมดผู้พัฒนาให้ลบเนื้อหาของไดเรกทอรี var / generation และ var / di:

    rm -rf <your Magento install dir>/var/di/* <your Magento install dir>/var/generation/* 
  2. ตั้งค่าโหมด:

    magento deploy:mode:set developer

ข้อความต่อไปนี้จะปรากฏขึ้น

   Switched to developer mode.

0

ให้แน่ใจว่าได้รับอนุญาต

sudo chmod 777 . -R

หลังจากนั้น

php bin/magento deploy:mode:set developer

ไม่อนุญาตให้ปฏิเสธ


0

ตามDEVDOCSนี่คือทางออกสำหรับคุณ

หากคุณเปลี่ยนจากโหมดการผลิตเป็นโหมดผู้พัฒนาคุณจะต้องล้างคลาสและวัตถุที่สร้างขึ้นทั้งหมด

เรียกใช้รหัสบรรทัดนี้ใน CLI เพื่อลบเนื้อหาของรหัสที่สร้างและไดเรกทอรีข้อมูล Meta ที่สร้าง

$rm rf <magento_root>/ generated/metadata/* <magento_root>/generated/code/*

เพื่อตั้งโหมด -

$bin / magento deploy : mode : set developer

หลังจากเรียกใช้คำสั่งนี้จะแสดงข้อความเกี่ยวกับเปิดใช้งานโหมดนักพัฒนาซอฟต์แวร์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.