2014-04-18 19 views
8

tôi đã thiết lập này trong debian: apache 2.4 proxy_fcgi và php-fpm (v5.5). Trong tệp virtualhost của tôi, tôi có:apache2.4 + php-fpm + phpmyadmin trong debian

<VirtualHost *:80> 
DocumentRoot /var/www/html 
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/php5-fpm.sock|fcgi://./var/www/html 
CustomLog ${APACHE_LOG_DIR}/access.log combined 
ErrorLog ${APACHE_LOG_DIR}/error.log 
</VirtualHost> 

và mọi thứ hoạt động tốt, tôi có thể xem phpinfo() và mọi tập tin php yêu cầu trong/var/www/html /.

tôi tiếp tục cài đặt phpmyadmin từ repo debian nhưng khi tôi duyệt đến http://MY.IP/phpmyadmin tôi nhận được một thông báo lỗi "File not found" và trong nhật ký lỗi apache

"[proxy_fcgi:error] AH01071: Got error 'Primary script unknown\n'" 

Debian gói phpMyAdmin bãi nội dung vào/usr/share/phpmyadmin. Nếu tôi tạo một file test.html dưới/usr/share/phpmyadmin tôi có thể xem nội dung của nó từ http://MY.IP/phpmyadmin/test.html

Vấn đề là file php dưới/usr/share/phpmyadmin không được xử lý. Cấu hình apache phpmyadmin là:

# phpMyAdmin default Apache configuration 

Alias /phpmyadmin /usr/share/phpmyadmin 

<Directory /usr/share/phpmyadmin> 
     Options FollowSymLinks 
     DirectoryIndex index.php 

     <IfModule mod_php5.c> 
       AddType application/x-httpd-php .php 
       <FilesMatch ".+\.php$"> 
        SetHandler application/x-httpd-php 
       </FilesMatch> 

       php_flag magic_quotes_gpc Off 
       php_flag track_vars On 
       php_flag register_globals Off 
       php_admin_flag allow_url_fopen Off 
       php_value include_path . 
       php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp 
       php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/ 
     </IfModule> 

</Directory> 
... 

và được tải trong tệp cấu hình apache.

Vì không có mod_php cài đặt không có xử lý cho các tập tin php. Làm thế nào tôi có thể nói apache để sử dụng proxy_fcgi để xử lý các tập tin php dưới/usr/share/phpmyadmin thư mục?

>> cập nhật < < tôi đã thêm một chỉ thị proxypassmatch trong conf phpmyadmin apache của

ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ unix:/var/run/php5-fpm.sock|fcgi:///usr/share/phpmyadmin/ 

mong đợi để làm việc nhưng tôi vẫn gặp lỗi tương tự.

>> cập nhật 2 < < tôi thay thế unix ổ cắm php-fpm với mạng (127,1: 9000) và thay thế ProxyPassmatch file virthualhost với:

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1 

và trong conf apache phpmyadmin của:

ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/phpmyadmin/$1 
ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/phpmyadmin$1index.php 

và mọi thứ hoạt động .. khi tôi đi đến MY.IP/phpinfo.php tôi nhận được phpinfo từ /var/www/html/phpinfo.php và khi tôi ghé thăm MY.IP/phpmyadmin/phpinfo .php i lấy nội dung được xử lý của /usr/share/phpmyadmin/phpinfo.php.

Vấn đề của tôi được giải quyết nhưng tôi vẫn không hiểu tại sao kết nối mạng với các công trình php-fpm nhưng các ổ cắm unix thì không.

+0

Nếu tôi có thể hôn bạn, tôi sẽ, thuần khiết! – Creek

+0

Bạn đã cứu mạng tôi! cảm ơn rất nhiều ! –

+0

Tôi cũng đã thử làm việc với các ổ cắm Unix cho đến khi tôi bỏ cuộc. Nó sẽ không hoạt động. Vì vậy, quyết định quay trở lại kết nối tcp !! –

Trả lời

0

Hình như bạn giải quyết điều này.

  1. PHPMyAdmin của bạn được đặt để sử dụng mod_php5, có thể chưa được cài đặt vì bạn đang sử dụng PHP thông qua PHP-FPM.
  2. Bạn xác định một cách chính xác rằng thiết lập phpmyadmin đòi hỏi một ProxyPass trong đó có con đường đúng để các tập tin PHP.

Đối với bit cuối cùng, thường là php-fpm sẽ nghe trên ổ cắm unix hoặc trên TCP nhưng không phải cả hai.Chỉ thị listen được đặt thành số /etc/php5/fpm/pool.d/www.conf là gì? Có nhiều hơn một chỉ thị listen được xác định không?

Tôi đoán chỉ có một số Listen 127.0.0.1:9000 được đặt trong đó.

+0

Cảm thấy tự do để upvote bình luận của tôi nếu nó đã giúp :) – dzhi

1

Điều này có thể là do thực tế là các ổ cắm đang được supported from Apache 2.4.9 và bạn đã sử dụng một số phiên bản trước đó của 2,4 có lẽ?

+1

yup, đó là vấn đề với unix socket, Apache hỗ trợ unix socket từ v2.4.9 trở lên (hoặc với một bản vá cho v2.4.7). Tôi đã sử dụng 2.4.7 nhưng tại thời điểm đó Apache tài liệu đã không chỉ định rằng unix socket không được hỗ trợ. – papasj

5

Tôi đã đấu tranh với vấn đề tương tự chính xác này và tôi không thể lấy phpmyadmin để làm việc. Tôi vẫn nhận được tệp "Không tìm thấy" được đề cập ở trên. Vấn đề của tôi là tôi đã phải đặt của tôi trong ProxyPassMatch của tôi bên trong của tôi 000-default.conf tập tin bên trong thư mục ./sites-available của tôi và tôi đã phải đặt các mục này TRƯỚC KHI mặc định của tôi. Đây là phác thảo ở cuối trang này, nơi tôi tìm thấy giải pháp: http://jordanconway.com/set-up-apache-2-4-with-php-fpm-on-ubuntu-13-10/

Đây là cách tôi thiết lập để tham khảo.

<VirtualHost *:80> 
    ... 
    DocumentRoot /var/www/html 
    ... 
    ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/phpmyadmin/$1 
    ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/phpmyadmin$1index.php 
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1 
</VirtualHost>