解决启动php-fpm后访问不到php文件的问题,主要是由于Nginx没有正确地连接到php-fpm或php-fpm配置有误所导致的。为了解决这个问题,可以按照以下步骤进行操作:
确认Nginx是否正确连接php-fpm
- 确认php-fpm是否启动,并监听正确的IP和端口。可以使用
sudo netstat -lnp | grep php-fpm
来查看。如果没有监听正确的IP和端口,可以在php-fpm的配置文件中进行修改。 - 确认Nginx是否正确配置了连接php-fpm所需的参数。可以在Nginx的配置文件中查找
fastcgi_pass
指令,并确认其连接到了正确的IP和端口,例如:
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm.sock;
...
}
如果php-fpm监听的是IP和端口,可以使用以下形式来配置:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
...
}
- 如果Nginx和php-fpm运行在同一主机上,需要确认php-fpm的监听方式是否正确。可以在php-fpm的配置文件中查找
listen
指令,并确认其指向了正确的IP和端口或sock文件,例如:
listen = /var/run/php-fpm.sock
- 如果以上方法都没有解决问题,可以查看Nginx的错误日志(通常位于
/var/log/nginx/error.log
)和php-fpm的错误日志(通常位于/var/log/php-fpm.log
)。根据错误日志中的提示进行调试。
确认php-fpm是否正确解析php文件
- 确认php-fpm是否正确解析php文件。可以在php-fpm的配置文件中查找
php_admin_value
指令,并确认其正确设置了php解析器的路径和文件类型,例如:
php_admin_value[doc_root] = /var/www/html
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_value[error_reporting] = E_ALL
php_admin_value[log_errors] = on
php_admin_value[memory_limit] = 128M
php_admin_value[post_max_size] = 100M
php_admin_value[upload_max_filesize] = 100M
php_admin_value[upload_tmp_dir] = /tmp
php_admin_value[display_errors] = on
php_admin_value[date.timezone] = Europe/London
php_admin_value[session.save_path] = /var/lib/php/sessions
php_admin_value[include_path] = ".:/usr/share/php:/usr/share/pear"
php_admin_value[php_admin_flag[log_errors]] = on
php_admin_value[php_admin_flag[display_errors]] = off
php_admin_value[engine] = on
php_admin_flag[short_open_tag] = off
php_admin_value[extension] = /usr/lib/php/modules/mysqli.so
php_admin_value[cgi.fix_pathinfo] = 0
php_admin_value[default_charset] = UTF-8
php_admin_value[expose_php] = off
; PHP-FPM pool settings
[www]
user = www-data
group = www-data
listen = /run/php/php7.2-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
- 确认Nginx是否正确配置了默认的index文件,例如:
index index.html index.php;
- 确认php文件的权限是否正确。可以使用
ls -l /path/to/file.php
来查看权限,如果权限不足,可以使用sudo chmod 644 /path/to/file.php
来修改。
解决启动php-fpm后访问不到php文件的问题,主要是由于Nginx没有正确地连接到php-fpm或php-fpm配置有误所导致的。可以参考以上步骤进行排查问题。
示例1:
如果php-fpm监听的是IP和端口,可以在Nginx的配置文件中按照以下方式配置:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
...
}
示例2:
如果Nginx和php-fpm运行在同一主机上,可以在php-fpm的配置文件中设置sock文件路径,并在Nginx的配置文件中按照以下方式配置:
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm.sock;
...
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决启动php-fpm后访问不到php文件的办法 - Python技术站