Thiết lập PHP từ nguồn và mod_fgcid trên CentOS 6, bị từ chối cấp phép


1

Tôi đã biên dịch PHP từ nguồn và cài đặt nó vào /opt/php/5.5.15/

Tôi cũng đã cài đặt (với yum) httpd, và mod_fcgid.

Tôi đang cố gắng cấu hình một máy chủ ảo để thực thi php như thế này:

<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>

Tôi nhận được lỗi này:

[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/

Tôi đã thử chmod 777 php-cgichown apache:apache php-cgi, cả hai đều không có sự khác biệt.

Có ý kiến ​​gì không?

Lưu ý: thiết lập này hoạt động tốt trên Debian


Bạn có chạy SELinux không? Hãy thử đặt nó ở chế độ cho phép, bằng cách thay đổi / etc / selinux / config: SELINUX=permissiveSau đó, khởi động lại máy chủ.
Jakov Sosic

CentOS 6 tiêu chuẩn của nó, có lẽ là như vậy (tôi sẽ phải kiểm tra chắc chắn vào ngày mai). Có cách nào để đi xung quanh nó mà không làm điều này, vì điều này không lý tưởng.
Petah

Bạn có thể bật kiểm toán và xem những quy tắc nào là bạn bè, sau đó viết chính sách của riêng bạn, cho phép người dùng Apache chạy nhị phân từ /opt/php/5.5.15/bin Đó là lý do tại sao việc sử dụng các gói RPM luôn thông minh đồ đạc. Đối với php 5.5, bạn có thể sử dụng php55 pacakges từ IUS repo: dl.iuscommunity.org/pub/ius/ sóng / Reved / 6 / x86_64 Cài đặt phát hành epel và phát hành ius bằng tay, sau đó cài đặt php55u-cli php55u- bcmath ... và tất cả các plugin php khác mà bạn cần.
Jakov Sosic

@JakovSosic tìm kiếm trong nhật ký kiểm toán hiện tại, có vẻ như httpd không có quyền thực thi (theo chính sách của Selinux) trên thùng php-cgi. Bất kỳ ý tưởng về cách cho phép nó? Ngoài ra, lý do cho việc thiết lập và biên dịch cụ thể này từ nguồn là tôi cần chạy nhiều phiên bản PHP cạnh nhau.
Petah

Câu trả lời:


1

Vì vậy, hóa ra SELinux đã từ chối quyền thực thi httpd trên bin php-cgi.

Xem /var/log/audit/audit.log đã cho thấy điều này.

Chạy như sau cho phép nó:

sudo chcon -t httpd_sys_script_exec_t /opt/php/5.5.15/bin/php-cgi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.