2016-12-19 15 views
0

システムはFedora 25で、Nginx 1.10.2とPHP 7.0.14はCGIモードで動作します。Nginx + PHP-FPMでphpMyAdminをエイリアスとして動作させる

dnfを使用してphpMyAdminをインストールすると、場所は/usr/share/phpMyAdminとなるので、マルチウェブサイトでエイリアスとして動作させようとします。

location /phpmyadmin { 
    alias /usr/share/phpMyAdmin; 
    include fastcgi_php.conf; 
} 

私はopen_basedirに場所を追加します。

2016/12/19 17:52:05 [error] 2241#0: *2 FastCGI sent in stderr: "Unable to open primary script: /usr/share/phpMyAdmin/phpmyadmin/index.php (No such file or directory)" while reading response header from upstream, client: 1.1.1.1, server:1.1.1.1 , request: "GET /phpmyadmin/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:" 

はどのようにそれが正しい行いと仕事をする:

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/usr/share/phpMyAdmin/:/var/lib/phpMyAdmin/:/etc/phpMyAdmin/:/usr/share/php:/usr/bin/pear:/dev/null:/var/lib/php"; 

は私がURLとログショーこのメッセージを開きますか?ありがとうございました!

更新:

私は、PHPのFastCGIの空白ページの問題を解決するために、私はこのファイルに2行を追加し、多分fastcgi_paramによって生じたと思います。

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; 

nginx.conf:

user nginx nginx; 
worker_processes 2; 
pid /run/nginx.pid; 

include /etc/nginx/modules-enabled/*.conf; 

events { 
    use epoll; 
    worker_connections 2048; 
    multi_accept on; 
} 

http { 
    log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
        '$status $body_bytes_sent "$http_referer" ' 
        '"$http_user_agent" "$http_x_forwarded_for"'; 
    access_log /var/log/nginx/access.log main; 
    error_log /var/log/nginx/error.log; 
    include /etc/nginx/mime.types; 
    default_type application/octet-stream; 
    geoip_country /usr/share/GeoIP/GeoIP.dat; 

    charset UTF-8; 
    sendfile on; 
    send_timeout 10; 
    tcp_nopush on; 
    tcp_nodelay on; 
    keepalive_timeout 30; 
    server_tokens off; 
    client_header_timeout 10; 
    client_max_body_size 64M; 
    client_body_timeout 10; 
    client_body_buffer_size 256k; 
    open_file_cache max=102400 inactive=20s; 
    open_file_cache_valid 30s; 
    open_file_cache_min_uses 5; 
    open_file_cache_errors off; 
    types_hash_max_size 4096; 
    reset_timedout_connection on; 
    fastcgi_buffers 16 32k; 
    fastcgi_buffer_size 32k; 
    fastcgi_intercept_errors on; 
    gzip on; 
    gzip_disable "msie6"; 
    gzip_vary on; 
    gzip_proxied any; 
    gzip_min_length 1024; 
    gzip_comp_level 6; 
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 
} 

fastcgi_php.conf:

location ~ \.php$ { 
    fastcgi_split_path_info ^(.+?\.php)(/.*)?$; 
    fastcgi_pass unix:/var/run/php5-fpm.sock; 
    fastcgi_index index.php; 
    include fastcgi_params; 
} 

website.conf:

server { 
listen 443 ssl; 
server_name test.domain.com; 
root /var/www/site1; 
index index.html index.php; 
access_log /var/log/site1-access.log combined; 
error_log /var/log/site1-error.log warn; 
ssl_certificate /etc/nginx/ssl/xxx.crt; 
ssl_certificate_key /etc/nginx/ssl/xxx.key; 
ssl_dhparam /etc/nginx/ssl/dhparams.pem; 
ssl_session_cache shared:SSL:10m; 
ssl_session_timeout 10m; 
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; 
ssl_prefer_server_ciphers on; 
add_header Strict-Transport-Security "max-age=31536000"; 
add_header X-Content-Type-Options nosniff; 

location/{ 
    try_files $uri $uri/ /error.html; 
    include fastcgi_php.conf; 
} 

location /phpmyadmin { 
    alias /usr/share/phpMyAdmin; 
    include fastcgi_php.conf; 
} 

location = /robots.txt { 
    allow all; 
    log_not_found off; 
    access_log off; 
} 

location ~ /\. { 
    deny all; 
} 

}

答えて

0

はそれが仕事だろうが、そのようなファイルやディレクトリ。 Nginx フォルダが存在しないため、/ usr/share/phpMyAdmin/phpmyadmin/にindex.phpが見つかりません。

phpmyadminの場所のエイリアスパスを編集する必要があります(コードスニペットの仕組みを参照してください)。その後を/ usr/share/パスに移動し、phpmyadminの(小文字)にフォルダphpMyAdminのの名前を変更したり、場所で同様の表記を使用します(例:場所/ phpMyAdminの)

server { 
    listen 443 ssl; 
    server_name test.domain.com; 
    root /var/www/site1; 
    index index.html index.php; 

    # Configure Access and Error Logging 
    access_log /var/log/site1-access.log combined; 
    error_log /var/log/site1-error.log warn; 

    # Configure SSL Certification usage 
    ssl_certificate /etc/nginx/ssl/xxx.crt; 
    ssl_certificate_key /etc/nginx/ssl/xxx.key; 
    ssl_dhparam /etc/nginx/ssl/dhparams.pem; 
    ssl_session_cache shared:SSL:10m; 
    ssl_session_timeout 10m; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; 
    ssl_prefer_server_ciphers on; 

    # Add Headers for security purposes 
    add_header Strict-Transport-Security "max-age=31536000"; 
    add_header X-Content-Type-Options nosniff; 

    # Define some page rules 
    location/{ 
     try_files $uri $uri/ /error.html; 
     include fastcgi_php.conf; 
    } 

    location /phpmyadmin { 
     alias /usr/share; 
     include fastcgi_php.conf; 
    } 

    location = /robots.txt { 
     allow all; 
     log_not_found off; 
     access_log off; 
    } 

    location ~ /\. { 
     deny all; 
    } 
+0

はい、私はそれを知って、私はサイトディレクトリに/ usr/share/phpMyAdminをコピーしようとすると、それは完全に動作します。私はNginxエイリアスに/ usr/share/phpMyAdminを許可して、すべてのサイトがコピーを作成せずにphpMyAdminを直接使用できるようにしたいと考えています。 –

+0

/usr/share /内のphpMyAdminフォルダの名前をphpmyadmin(小文字)に変更し、エイリアスを "alias/usr/share;"に編集してください。私はこれが動作すると思う – Htaccess24

+0

まだ間違って、ログショー主なスクリプトを開くことができません:/usr/share/phpmyadmin/phpmyadmin/index.php(そのようなファイルやディレクトリ)。 –

関連する問題