ไม่มีสิทธิ์การเขียนในไดเร็กทอรี pub / static เมื่อรันการตั้งค่า bin / magento: อัพเกรด


19

วันก่อนฉันอัปเดตโมดูลใหม่และทำงานได้ตามปกติ ตอนนี้เมื่อฉันวิ่งbin/magento setup:upgradeฉันได้รับข้อยกเว้นด้านล่าง ฉันลองตั้งค่าการอนุญาตเป็น 777 (หรือ 770) สำหรับpubโฟลเดอร์ใน Magento 2 แต่มันไม่ทำงาน

  [ข้อยกเว้น] ไม่มี
  สิทธิ์ในการเขียนในไดเรกทอรีต่อไปนี้: 'pub / static'


คุณจัดการเพื่อแก้ไขปัญหานี้หรือไม่? ถ้าเป็นเช่นนั้นกรุณาโพสต์การแก้ปัญหา
Reena Parekh

คุณมีปัญหาเดียวกันหรือไม่
ท้าว Pham

ใช่ฉันกำลังเผชิญกับปัญหาเดียวกัน คุณแก้ไขมันได้อย่างไร
Reena Parekh

ฉันแสดงความคิดเห็นรหัสบรรทัดในหลัก คุณต้องการทำตามฉันไหม
ท้าวผาม

1
ฉันโพสต์ relsove ของฉันในโพสต์ด้านล่าง ฉันสามารถลองกับมันได้
Thao Pham

คำตอบ:


30

TL; DR ตัดทอนpub/staticโฟลเดอร์


สำหรับฉันฉันมีการติดตั้งรุ่นเก่าซึ่งอาจมี symlink และไฟล์เก่าซึ่งไม่มีอยู่อีกต่อไป

ปัญหา checkInstallationFilePermissionsคือว่ามันตรวจสอบสิทธิ์ซ้ำ ไฟล์และโฟลเดอร์ ฉันมี symlink ที่ขาดหายไปและนั่นเป็นเท็จในการตรวจสอบถ้ามันเขียนได้

วิธีแก้ปัญหา:

  1. setup/src/Magento/Setup/Model/FilePermissions.php

  2. ไปที่บรรทัด 143 ในวิธีการ checkRecursiveDirectories

  3. เพิ่มบรรทัด var_dump($subDirectory);var_dump($subDirectory->isWritable());

  4. เรียกใช้อีกครั้ง bin/magento setup:upgrade

ตอนนี้คุณจะเห็นสิ่งที่ผิดจริงและคุณสามารถแก้ไขได้ ส่วนตัวฉันลบทุกอย่างในpub/staticนี้จะเป็นเนื้อหาที่สร้างขึ้นโดยอัตโนมัติดังนั้นคุณไม่ควรกังวลเกี่ยวกับเรื่องนี้


1
ฉันลบ pub / static ทั้งหมดหลังจากรัน setup: อัพเกรดเฉพาะโฟลเดอร์ภายใน pub / static คือโฟลเดอร์ __requirejs Css หายไปไม่มีสไตล์อะไรเลย .... ผู้ชาย .. ฉันหวังว่าฉันจะไม่ทำอย่างนั้น
Lachezar Raychev

ฉันจะคืนค่าทุกอย่างใน pub / static ได้อย่างไร
Lachezar Raychev

2
ทุกอย่างเป็นไปด้วยดี .... :) ฉันเริ่มที่จะ
ดูถูกดูแคลน

3
หากคุณลบเนื้อหาของ pub / static ให้แน่ใจว่าคุณไม่ได้ลบ pub / static / .htaccess เนื่องจากเป็นส่วนหนึ่งของรหัสฐานและไม่ถูกสร้างขึ้นใหม่: github.com/magento/magento2/tree/2.0/ pub / static
mttjohnson

Perfecto! นี่มัน ..
Arvind07

11

ฉันพบข้อผิดพลาดในการพัฒนาเนื่องจากการเชื่อมโยงสัญลักษณ์ที่ใช้งานไม่ได้

ฉันสร้างไฟล์ในview/frontend/webไดเรกทอรีของโมดูลที่อยู่ในdeveloperโหมดที่ปรับใช้กับpub/staticไดเรกทอรีโดยใช้ลิงก์สัญลักษณ์ที่ชี้ไปที่ไดเรกทอรีของโมดูลที่จัดเก็บไฟล์ต้นฉบับ

ในบางช่วงของการพัฒนาฉันลบไฟล์ออกจากโมดูลของฉัน แต่ลิงก์สัญลักษณ์ยังคงมีอยู่ในการpub/staticชี้ไปยังไฟล์ที่ไม่มีอยู่อีกต่อไป ฉันคาดว่าจะเป็นเช่นนี้หากฉันเปลี่ยนชื่อไฟล์หนึ่งไฟล์

หากไซต์อยู่ในproductionโหมดและbin/magento setup:static-content:deployทำงานซึ่งจะเป็นการคัดลอกไฟล์ไปยังpub/staticไดเรกทอรีแทนที่จะสร้างลิงก์สัญลักษณ์

ในการค้นหาลิงก์สัญลักษณ์ที่ไม่ทำงานนี้ฉันได้รันคำสั่งจากเชลล์

find -L . -type l

การลบลิงก์สัญลักษณ์ที่เสียหายจะแก้ไขปัญหาได้ (ตัวอย่างเช่นการใช้find -L . -type l -exec rm {} \;)


นี่คือคำตอบสำหรับปัญหาของฉันเช่นกันขอบคุณ mttjohnson!
Joshua Soileau

4

ภายในไดเรกทอรีรากของวีโอไอพีของคุณให้เรียกใช้คำสั่งด้านล่างและปัญหาของคุณจะหายไป:

$ rm -rf pub/static/*
$ php bin/magento setup:static-content:deploy

ทำงานให้ฉัน


จะเป็นการลบ.htaccessไฟล์ด้วย คุณต้องการ.htaccessไฟล์
Adarsh ​​Khatri

2

คุณควรตั้งค่าการอนุญาตตามที่อธิบายไว้ในเอกสารประกอบอย่างเป็นทางการ: http://devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html


1
คุณสามารถให้สิทธิ์ที่แท้จริงเพียงแค่ทำให้เกิดการเปลี่ยนแปลงใน URL
rob3000

ฉันลองอีกครั้ง แต่มันไม่ทำงาน
ท้าว

อย่าลืมที่จะทำซ้ำในไดเรกทอรีย่อย: pub, pub / static, ฯลฯ
Mage2.PRO

การเป็นเจ้าของมีความสำคัญเท่ากับการอนุญาต ตรวจสอบการเชื่อมโยงดังกล่าวข้างต้นและยังdevdocs.magento.com/guides/v2.0/install-gde/prereq/... คุณต้องมีผู้ใช้สองคน ผู้ใช้ในพื้นที่และผู้ใช้เว็บเซิร์ฟเวอร์
Steve Johnson

แนวคิดทั้งหมดของการตั้งค่าการอนุญาตในระดับแอปพลิเคชันนั้นผิดดังนั้นฉันคิดว่าคนควรหลีกเลี่ยงเอกสารในส่วนนั้น จะมีการอัปเดตในรุ่นถัดไปตามปัญหา GitHub ของพวกเขา
Claudiu Creanga

1

นี่คือการแก้ไขชั่วคราวของฉัน ความคิดเห็นผมเส้น 744 และ 466 <magento_dir>/setup/src/Magento/Setup/Model/Installer.phpใน

นี่คือรหัสบรรทัด:

$this->checkInstallationFilePermissions();

ฉันต้องการทางออกไม่เปลี่ยนไฟล์หลัก


ปัญหาน่าจะเกิดจาก symlink ที่เสียหาย (ตอบด้านล่าง) ภายใต้ไดเร็กทอรี pub / static การลบ symlink ที่ใช้งานไม่ได้ควรแก้ไขปัญหาได้โดยไม่ต้องแก้ไขไฟล์หลัก
mttjohnson

newtips.co/magento/questions/91184/… สิ่งนี้จะใช้งานได้
Envision Ecommerce

@EnvisionEcommerce ลิงก์ไม่ทำงาน
MagePsycho


0

โฟลเดอร์เหล่านี้จำเป็นต้องมีสิทธิ์ที่ถูกต้องตามที่อธิบายไว้ใน: http://devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html

เมื่อคุณลบเนื้อหาของโฟลเดอร์ pub / static และให้สิทธิ์ pub / static folder 770 กับข้อความนั้นจะไม่ปรากฏขึ้นอีก


0

ฉันมีปัญหาเดียวกันกับที่ฉันไม่สามารถติดตั้ง Magento ผ่านทางบรรทัดคำสั่ง เพียงสร้างโฟลเดอร์เพื่อpub/staticแก้ไขปัญหา


0

หากใครบางคนกำลังมีปัญหานี้ในระบบปฏิบัติการ Windows เพียงแค่รันคำสั่งบนพรอมต์คำสั่งของผู้ดูแลระบบและมันจะทำงานเหมือนมีเสน่ห์ หวังว่านี่จะช่วยใครซักคน


0

ในกรณีของฉันใช้คำสั่งอัพเกรดผ่านผู้ใช้ที่ไม่ใช่รูทหรือผู้ใช้ที่มีสิทธิ์ จำกัด ทำให้เกิดข้อผิดพลาด ตรวจสอบให้แน่ใจว่าคุณเรียกใช้คำสั่งอัพเกรดกับผู้ใช้ที่มีสิทธิ์เพียงพอ


0

ฉันตรวจสอบสิทธิ์การเขียนหลายครั้งและทุกอย่างดี

  1. ฉันแสดงความคิดเห็นแถวนี้ซึ่งทำให้ฉันมีข้อยกเว้น
  2. จากนั้นฉันก็ทำการติดตั้ง: อัพเกรด
  3. ย้อนกลับแถวด้วยข้อยกเว้น
  4. ปัญหาไม่ได้ทำซ้ำอีก

0

เรียกใช้คำสั่งต่อไปนี้สำหรับสามที่อยู่ IP ต่อไปนี้:

<Magento-Directory>php bin\magento maintenance:allow-ips 127.0.0.1, 
<Magento-Directory>php bin\magento maintenance:allow-ips "the ip of my localhost given by the NAT-Router" and
<Magento-Directory>php bin\magento maintenance:allow-ips  "the ip of the NAT-Router" 

0

อย่าใช้สิ่งนี้:

rm -r pub/static

มันจะลบไฟล์ทั้งหมดแม้กระทั่ง. htaccess

คุณสามารถใช้สิ่งนี้จะดีกว่า:

rm -rf pub/static/frontend
rm -rf pub/static/adminhtml

หลังการใช้งาน:

php bin/magento setup:static-content:deploy en_US -f 

-1

เพียงลบโฟลเดอร์ pub / static ออกจาก magento2 ของคุณ

rm -r pub/static

จากนั้นปรับใช้เนื้อหาแบบคงที่ของ magento2

php bin/magento setup:static-content:deploy

โดยใช้กระบวนการนี้ปัญหาเดียวกันของฉันได้รับการแก้ไข


4
คุณไม่ควรลบไดเรกทอรี pub / static ทั้งหมดเนื่องจากมีไฟล์. htaccess ที่สำคัญและไฟล์. htaccess จะไม่ถูกสร้างขึ้นใหม่ในการปรับใช้เนื้อหาแบบคงที่ใด ๆ คุณสามารถเรียกใช้rm -r pub/static/*และควรหลีกเลี่ยงการลบไฟล์. htaccess
mttjohnson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.