ติดตั้ง PHP จากแหล่งที่มาและ mod_fgcid บน CentOS 6 ได้รับการปฏิเสธสิทธิ์


1

ฉันรวบรวม PHP จากซอร์สและติดตั้งไว้ /opt/php/5.5.15/

ผมได้ติดตั้งยัง (มีyum) และhttpdmod_fcgid

ฉันพยายามกำหนดค่าโฮสต์เสมือนเพื่อเรียกใช้งาน php ดังนี้:

<VirtualHost *:80>
    ServerAdmin me@example.co.nz
    DocumentRoot /var/www/my-site.example.com/site/public
    ServerName my-site.example.com
    ErrorLog /var/www/my-site.example.com/logs/my-site.example.com-error_log
    CustomLog /var/www/my-site.example.com/logs/my-site.example.com-access_log common
    <Directory /var/www/my-site.example.com/site/public>
        Options +indexes
        AllowOverride all
        Order allow,deny
        Allow from all
        Action application/x-httpd-php /php-5.5.15-bin/php-cgi
    </Directory>
</VirtualHost>

<IfModule mod_fcgid.c>
    IdleTimeout 3600
    ProcessLifeTime 7200
    MaxProcessCount 64
    DefaultMaxClassProcessCount 8
    IPCConnectTimeout 300
    IPCCommTimeout 7200
    BusyTimeout 300

    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>

    ScriptAlias /php-5.5.15-bin/ /opt/php/5.5.15/bin/

    <Directory "/opt/php">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>
</IfModule>

ฉันได้รับข้อผิดพลาดนี้:

[Thu Aug 14 17:36:20 2014] [error] [client 127.0.0.1] (13)Permission denied: exec of '/opt/php/5.5.15/bin/php-cgi' failed, referer: http://my-site.example.com:10080/
[Thu Aug 14 17:36:20 2014] [error] [client 127.0.0.1] Premature end of script headers: php-cgi, referer: http://my-site.example.com:10080/

ฉันได้ลองchmod 777 php-cgiแล้วและchown apache:apache php-cgiทั้งคู่ก็ไม่แตกต่างกัน

ความคิดใด ๆ

หมายเหตุ: การตั้งค่านี้ทำงานได้ดีบน Debian


คุณใช้งาน SELinux หรือไม่ ลองตั้งค่าในโหมดที่อนุญาตโดยเปลี่ยน / etc / selinux / config: SELINUX=permissiveหลังจากนั้นให้รีบู๊ตเซิร์ฟเวอร์
Jakov Sosic

มันเป็นมาตรฐาน CentOS 6 ดังนั้นน่าจะเป็นเช่นนั้น (ฉันจะต้องตรวจสอบในวันพรุ่งนี้) อย่างไรก็ตามมีการรับรอบโดยไม่ทำเช่นนี้เนื่องจากไม่เหมาะ
Petah

คุณสามารถเปิดการตรวจสอบและดูว่ากฎใดบ้างที่น่าเชื่อถือแล้วเขียนนโยบายของคุณเองซึ่งอนุญาตให้ผู้ใช้ Apache เรียกใช้ไบนารีจาก /opt/php/5.5.15/bin นั่นเป็นเหตุผลว่าทำไมมันฉลาดเสมอที่จะใช้แพ็คเกจ RPM และไม่คอมไพล์ของคุณเอง สิ่ง สำหรับ php 5.5 คุณสามารถใช้ php55 pacakges จาก IUS repo: dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64ติดตั้ง epel-release และ ius-release ด้วยตนเองจากนั้นทำการติดตั้ง php55u-cli php55u- bcmath ... และปลั๊กอิน php อื่น ๆ ทั้งหมดที่คุณต้องการ
Jakov Sosic

@JakovSosic กำลังดูบันทึกการตรวจสอบปัจจุบันดูเหมือนว่า httpd ไม่มีสิทธิ์ดำเนินการ (ภายใต้นโยบาย SELinux) บน php-cgi bin มีความคิดเกี่ยวกับวิธีการอนุญาตหรือไม่ ด้วยเหตุผลสำหรับการตั้งค่านี้โดยเฉพาะและการคอมไพล์จากซอร์สโค้ดคือฉันต้องรัน PHP หลายรุ่นเคียงข้างกัน
Petah

คำตอบ:


1

ดังนั้นปรากฎว่า SELinux ปฏิเสธสิทธิ์ httpd exec บน php-cgi bin

การดู /var/log/audit/audit.log แสดงสิ่งนี้

การเรียกใช้สิ่งต่อไปนี้อนุญาต:

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