ฉันรวบรวม PHP จากซอร์สและติดตั้งไว้ /opt/php/5.5.15/
ผมได้ติดตั้งยัง (มีyum
) และhttpd
mod_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
มันเป็นมาตรฐาน 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
SELINUX=permissive
หลังจากนั้นให้รีบู๊ตเซิร์ฟเวอร์