lemp - nginx+fast-cgi: cómo hacer que phpmyadmin funcione
nginx php-fpm (3)
lea el comentario, la orden debe ser exacta, si aún error, lea el error.log
### first define phpmyadmin static files
location ~ ^/phpmyadmin/.*/.(jpg|jpeg|gif|png|ico|css|js|woff|ttf)$ {
root /usr/share/;
expires max;
#log_not_found off;
}
### then your public_html static file
location ~* /.(jpg|jpeg|gif|png|ico|css|js|woff|ttf)$ {
root /path/public_html;
expires max;
#log_not_found off;
}
porque phpmyadmin ruta fuera de public_html, por lo que necesita try_files para redirigir barra "/" a "/index.php"
location /phpmyadmin {
try_files $uri $uri/ /phpmyadmin/index.php?$args;
}
y ahora el último, fastcgi
### Define phpmyadmin PHP files
location ~ ^/phpmyadmin/(.*)/.php$ {
## optional, try uncomment if error
#root /usr/share/phpmyadmin/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/$fastcgi_script_name;
include fastcgi_params;
}
### then your public_html files
location ~ /.php$ {
##optional, try uncomment if error
#root /path/public_html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /path/public_html/$fastcgi_script_name;
include fastcgi_params;
}
ahora puedes acceder a phpmyadmin en http://yoursite/phpmyadmin
Configuré mi servidor nginx + php. Todo funciona bien, excepto phpmyadmin.
Busqué en Google y encontré algunos trucos de alias, pero no me funcionaron.
Eso funciona genial:
location ~ ^/ololo/(.*/.php)$ {
alias $root_path/img/$1;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
location /ololo/ {
alias $root_path/img/;
index index.php;
}
Hay un directorio img
en mi ruta de acceso al sitio y cuando solicito nombre de sitio sitename/ololo/
o nombre de sitio sitename/ololo/index.php
todo está bien.
Pero eso:
location ~ ^/myadmin/(.*/.php)$ {
alias /usr/share/phpmyadmin/$1;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
location /myadmin/ {
alias /usr/share/phpmyadmin/;
index index.php;
}
no funcionará!
cuando intento solicitar el mysite/myadmin/
o mysite/myadmin/index.php
me lanza
Fichero de entrada no especificado.
mensaje de error. En /usr/share/phpmyadmin/
están todos los archivos .php
.
¿Qué pasa con mi nginx.conf
?
De acuerdo, de acuerdo con lo que entendí de sus respuestas, estoy modificando esta respuesta, agregue esto a su servidor principal y debería funcionar.
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+/.php)$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
}
}
EDITAR :
Ok, un vode abajo me hizo echar un vistazo a esto de nuevo. Ha pasado un tiempo desde que escribí esta respuesta y debería decir que no es así como escribiría el archivo de configuración si fuera hoy, aquí está la configuración que Yo usaría.
location /phpmyadmin {
index index.php index.htm;
root /usr/share;
}
location ~* /.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
si quiere usar un alias, reemplace el bloque phpmyadmin
con este
location /phpmyadmin {
index index.php index.htm;
alias /usr/share/phpmyadmin;
}
Nota: Si su bloque de servidor ya contiene el index
entonces no necesita redefinirlo dentro del bloque phpmyadmin
.
Esta es mi configuración:
location /phpmyadmin {
alias /usr/share/phpmyadmin;
index index.php;
location ~ /([^/]+/.php)$ {
try_files /$1 =404;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
location ~ /phpmyadmin/js/([^/]+/.php)$ {
try_files /phpmyadmin/js/$1 =404;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
}