such sock run php7 php5 permission failed php linux sockets nginx ansible

php5 - NGINX: connect() a unix:/var/run/php7.0-fpm.sock falló(2: No existe tal archivo o directorio)



php7 2 fpm service (5)

Edite su archivo /etc/php/7.0/fpm/pool.d/www.conf y encuentre la siguiente línea:

listen = 127.0.0.1:9000

Y coméntalo o reemplázalo con lo siguiente:

listen = /var/run/php7.0-fpm.sock

Estoy tratando de seguir este tutorial de Ansible mientras lo ajuste para Ubuntu 16.04 con php7. Debajo de este mensaje encontrarás mi archivo Ansible. Después de ejecutarlo e intentar visitar la página en el navegador, obtengo un 404 y lo siguiente en los registros de error de nginx:

10/10/2016 13:13:20 [crit] 28771 # 28771: * 7 connect () a unix: /var/run/php7.0-fpm.sock falló (2: No existe tal archivo o directorio) al conectarse a upstream, cliente: 93.xxx.xxx.xx, servidor: 95.xx.xx.xx, solicitud: "GET / HTTP / 1.1", upstream: "fastcgi: // unix: /var/run/php7.0- fpm.sock: ", host:" 95.xx.xx.xx "

Así que verifiqué si el archivo de socket existe y parece existir, pero ls comporta raro:

$ sudo ls -l /var/run/php total 4 -rw-r--r-- 1 root root 5 Oct 15 13:00 php7.0-fpm.pid srw-rw---- 1 www-data www-data 0 Oct 15 13:00 php7.0-fpm.sock $ sudo ls -l /var/run/php7 ls: cannot access ''/var/run/php7'': No such file or directory $ sudo ls -l /var/run/php7.0-fpm.sock ls: cannot access ''/var/run/php7.0-fpm.sock'': No such file or directory

¿Por qué ls puede encontrar el archivo de socket si lo busco por parte del nombre php mientras no puedo encontrar el archivo de socket cuando enumero más de ese php7 o incluso el nombre completo php7.0-fpm.sock ?

Y lo más importante, ¿cómo puedo hacer que esto funcione con nginx? Todos los consejos son bienvenidos!

a continuación pegué mi archivo ansible

--- - hosts: php become: true tasks: - name: install packages apt: name={{ item }} update_cache=yes state=latest with_items: - git - mcrypt - nginx - php-cli - php-curl - php-fpm - php-intl - php-json - php-mcrypt - php-mbstring - php-sqlite3 - php-xml - sqlite3 - name: enable mbstring shell: phpenmod mbstring notify: - restart php7.0-fpm - restart nginx - name: create /var/www/ directory file: dest=/var/www/ state=directory owner=www-data group=www-data mode=0700 - name: Clone git repository git: > dest=/var/www/laravel repo=https://github.com/laravel/laravel.git update=no become: true become_user: www-data register: cloned - name: install composer shell: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer args: creates: /usr/local/bin/composer - name: composer create-project composer: command=create-project working_dir=/var/www/laravel optimize_autoloader=no become: true become_user: www-data when: cloned|changed - name: set APP_DEBUG=false lineinfile: dest=/var/www/laravel/.env regexp=''^APP_DEBUG='' line=APP_DEBUG=false - name: set APP_ENV=production lineinfile: dest=/var/www/laravel/.env regexp=''^APP_ENV='' line=APP_ENV=production - name: Configure nginx template: src=nginx.conf dest=/etc/nginx/sites-available/default notify: - restart php5-fpm - restart nginx handlers: - name: restart php7.0-fpm service: name=php7.0-fpm state=restarted - name: restart nginx service: name=nginx state=restarted - name: reload nginx service: name=nginx state=reloaded


En /etc/nginx/nginx.conf

usuario nginx;

Si el servidor web trabaja en el usuario www-data necesita escribir

usuario www-data;


En Ubuntu 18.04, el problema para mí fue que actualmente está usando PHP 7.2, pero el archivo predeterminado de sitios disponibles tiene:

fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

Actualizar la versión en esa línea para que sea la 7.2 en lugar de 7.0 solucionó el problema para mí.

fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;


Respondiendo tu primera pregunta:

¿Por qué ls puede encontrar el archivo de socket si lo busco por parte del nombre php mientras no puedo encontrar el archivo de socket cuando enumero más de ese php7 o incluso el nombre completo php7.0-fpm.sock ?

Porque cuando ejecuta sudo ls -l /var/run/php está mostrando el contenido del directorio /var/run/php , pero cuando ejecuta sudo ls -l /var/run/php7 o sudo ls -l /var/run/php7.0-fpm.sock usted solicita archivos específicos en su directorio principal /var/run que no existen.

En cuanto a la segunda pregunta, no parece ser un problema Ansible, pero debe solucionar la ubicación de los archivos considerando lo anterior.


Tuvo el mismo problema. La solución es muy fácil.

En el archivo conf nginx está intentando upstreaming a

unix:/var/run/php7.0-fpm.sock

La ruta correcta es

unix:/var/run/php/php7.0-fpm.sock

Se menciona esto en la documentation

Nginx se comunica con PHP-FPM utilizando un socket de dominio Unix. Los sockets se asignan a una ruta en el sistema de archivos, y nuestra instalación de PHP 7 usa una nueva ruta de manera predeterminada:

PHP 5 /var/run/php5-fpm.sock

PHP 7 /var/run/php/php7.0-fpm.sock