nginx / HHVM 404 แก้ไขการแทนที่ $ document_root ด้วยพา ธ สัมบูรณ์ แต่การเปลี่ยนเส้นทางเพิ่มเส้นทางไปยัง URL


1

ฉันมีปัญหาแบบเดียวกับที่อธิบายไว้ในคำถามนี้และวิธีการแทนที่$document_rootด้วยมันเป็นเส้นทางที่แน่นอนทำงานจนกว่าการเปลี่ยนเส้นทางจะเพิ่มเส้นทางที่แน่นอนไปยัง URL ดังที่:

EXPECTED http://domain/pma/
REALITY  http://domain/var/www/pma/

ฉันกำลังจะดึงผมออกจากความยุ่งยากที่นี่ โปรดช่วยฉันด้วยอย่าหัวล้าน (แม้ว่าการทำให้เส้นผมอยู่ในแนวเส้นนั้นเป็นเรื่องยุ่งยาก แต่คุณก็ได้แนวคิด)

$ less /etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    include hhvm.conf;

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

$ less /etc/nginx/hhvm.conf
location ~ \.(hh|php)$ {
    fastcgi_keep_conn on;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

1
คุณช่วยโพสต์ไฟล์ nginx ของคุณได้ไหม?
เมห์

พยายามฟื้นฟู hhvm.conf เดิม (มี$document_root) และในไฟล์ vhost ของคุณย้ายรากออกจากโดยตรงภายใต้location server
เมห์

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

ตกลงฉันเพิ่งคัดลอกคำตอบที่ฉันให้กับคำถามที่เกี่ยวข้องที่คุณเชื่อมโยง
เมห์

คำตอบ:


1

rootสั่งถูกกำหนดภายในlocationนี้เป็นสาเหตุของปัญหาของคุณ

การกำหนดrootคำสั่งโดยตรงที่ระดับการserverตั้งค่าตัวแปรที่เหมาะสม$document_rootซึ่งจะได้รับใน hhvm.conf

server {
    listen       80;
    server_name  localhost;

    root   /var/www;

    location / {
        index  index.php index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    include hhvm.conf;
}

จากนั้นไม่มีการเปลี่ยนแปลงเป็นสิ่งจำเป็นของคุณhhvm.confแต่คุณอาจจะล้างบางที่มีมากเกินไป


ขอบคุณสำหรับลิงค์นั้นฉันตั้งใจจะตรวจสอบในsockที่สุด ฉันทำตามคำแนะนำที่อธิบายไว้ แต่ไม่ได้ผล ความคิดใด ๆ ฉันสามารถสร้างคำถามใหม่เกี่ยวกับมัน ...
Oxwivi

ตรวจสอบสิทธิ์ของไฟล์: nginx จะต้องสามารถเขียนไปยังซ็อกเก็ตได้ (หากเป็นเช่นนั้นสามารถแก้ไขได้ด้วยคำสั่งที่คล้ายกับ: usermod -a -G www-data nginxตามชื่อผู้ใช้ระบบของคุณ)
Mehdi

ตามps aux, nginx: masterทำงานเป็นผู้ใช้rootและเป็นnginx: worker nginxอันที่จริงแล้วการphpเป็นเจ้าของไฟล์ของฉันนั้นไม่ใช่nginxผู้ใช้หรือกลุ่มดังนั้นฉันจึงไม่คิดว่าเป็นปัญหา
Oxwivi

nginx ไม่จำเป็นต้องเข้าถึงไฟล์ php จำเป็นต้องมีการเข้าถึงเพื่อเขียนไฟล์ซ็อกเก็ต php5-fpm หรือ hhvm unix ของคุณ คุณอาจต้องการเพิ่มผู้ใช้ nginx ให้กับกลุ่มเจ้าของไฟล์ซ็อกเก็ต
เมห์

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