Ubuntu Apache2 DefaultRuntimeDir จะต้องเป็นไดเรกทอรีที่ถูกต้องแน่นอนหรือสัมพันธ์กับ ServerRoot


17

ฉันมีเว็บเซิร์ฟเวอร์ใช้ Ubuntu 17.04 Apacheที่ผมกำลังพยายามที่จะตั้งค่ากับ ทุกอย่างทำงานได้ดีจนกระทั่งฉันตัดสินใจที่จะโฮสต์เว็บไซต์สองแห่งบนเครื่องเดียวผ่าน virtualHosts ตอนนี้apacheปฏิเสธที่จะเริ่มต้นด้วยแม้แต่โฮสต์เดียวที่เปิดใช้งาน ทุกครั้งที่ฉันพยายามเริ่มApacheฉันได้รับข้อผิดพลาดนี้:

apache2: Syntax error on line 80 of /etc/apache2/apache2.conf:
DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot.

ความพยายามของฉันในการแก้ไขปัญหานี้ไม่ได้เกิดขึ้นกับสิ่งใดรวมถึง

apt purge apache2 && rm -r /etc/apache2 

โฆษณาทั้งหมด 80 DefaultRuntimeDir ${APACHE_RUN_DIR}ของข้อผิดพลาดบอกฉันคือ

และในเวลาไม่นานฉันจะเห็นว่าที่ไหนหรือสิ่งที่APACHE_RUN_DIRประกาศว่าเป็น

มีคนช่วยฉันได้ไหม

คำตอบ:


17

คำสั่ง

source /etc/apache2/envvars

แยกแยะปัญหาของฉันออกมา (หลังจากลองทั้งหมด

เพื่อตรวจสอบว่าทั้งหมดดีหรือไม่ใช้คำสั่ง

apache2 -S

ฉันพบว่าเร็วกว่าการใช้ระเบียน DNS ของฉัน


1
ผมใช้source /etc/apache2/envvarsแต่หลังจากนั้นไดเรกทอรีบ้านของฉันเปลี่ยนจาก~ไปและเมื่อผมเขียนซีดีมันแสดงให้เห็นhome -bash: cd: HOME not setเมื่อฉันเข้า envvars หนึ่งในสายแรกคือและ# this won't be correct after changing uid unset HOMEความคิดวิธีการแก้ไขปัญหานี้?
Mihail Minkov

7

มีการอัปเดตที่ขาดหายไปใน "man apache2" อย่างน้อยสำหรับตัวเลือก -V;

วันนี้เราควรใช้ "apachectl" หรือ "apache2ctl" แทน

"apache2" อย่างน้อยตัวเลือกบางตัวตามที่ระบุใน

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=879571


ไม่ชัดเจนเลยว่าวิธีนี้ตอบคำถามได้อย่างไร
Randy Cragun

6

Apache2 ใช้/etc/apache2/envvarsเพื่อตั้งค่าตัวแปรสภาพแวดล้อม คุณสามารถใช้ข้อมูลนี้เพื่อให้แน่ใจว่าไดเรกทอรี${APACHE_RUN_DIR}ชี้ไปถูกต้อง

ฉันประสบปัญหาเดียวกันขณะอัปเกรดจาก 14.04 เป็น 17.04 ปัญหาถูก: ${APACHE_RUN_DIR}ถูกกำหนดให้/var/run/apache2แต่โฟลเดอร์ apache2 /var/runได้ขาดหายไปใน

การแก้ไขสำหรับฉันคือ: mkdir /var/run/apache2


7
แม้ว่าคุณจะสร้างโฟลเดอร์หรือโฟลเดอร์นั้นมีอยู่แล้ว (เช่นในสถานการณ์ของฉัน) คุณจะต้องเรียกใช้คำสั่งต่อไปนี้ source /etc/apache2/envvars
Peshmerge

คุณจะต้องเรียกใช้คำสั่ง envvares หากคุณเริ่ม Apache โดยไม่มี startcript หากคุณใช้ init.d / system.d ไฟล์จะถูกจัดหาโดยอัตโนมัติ
Niyol

@Peshmerge ขอบคุณ! คุณสามารถบอกฉันถึงวิธีการรักษามันหลังจากรีบูต? ดูเหมือนว่าในการรีบูตเราต้องดำเนินการคำสั่งนั้นด้วยตนเองทุกครั้ง
T.Todua

1

ในกรณีของฉันมันเป็นเรื่องเกี่ยวกับ "ต้องมีการปฏิเสธทั้งหมด" บรรทัดในไฟล์ apache2.conf ซึ่ง (อีกครั้ง) ในกรณีของฉันถูกพิมพ์เป็นเพียงแค่ "ต้องถูกปฏิเสธ"


0

Reenebling php5.6apache module ช่วยแก้ไขปัญหานี้

กดCtrl+ Alt+ Tและพิมพ์เหล่านี้:

sudo a2dismod php5.6
sudo a2enmod php5.6

จากนั้นเริ่มบริการ apache2 ใหม่:

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