插件窝 干货文章 Laragon环境下Nginx提示“no input file specified.”,如何正确启用pathinfo功能?

Laragon环境下Nginx提示“no input file specified.”,如何正确启用pathinfo功能?

fastcgi Nginx pathinfo 文件 166    来源:    2025-03-16

在Laragon环境下使用Nginx时,出现“no input file specified.”错误通常是因为Nginx无法正确解析请求的PHP文件路径。要解决这个问题并正确启用pathinfo功能,可以按照以下步骤进行配置:

1. 检查Nginx配置文件

首先,找到Laragon中Nginx的配置文件。通常路径为:

C:\laragon\etc\nginx\sites-enabled\your-site.conf

2. 修改Nginx配置

在Nginx配置文件中,找到处理PHP请求的location块,通常如下所示:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

你需要确保fastcgi_param SCRIPT_FILENAME正确指向PHP文件的路径。如果$document_root不正确,Nginx将无法找到PHP文件,从而导致“no input file specified.”错误。

3. 启用pathinfo

pathinfo功能允许你在URL中使用类似于index.php/controller/action的格式。要启用pathinfo,你需要在Nginx配置中添加或修改以下内容:

location ~ \.php {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;

    # 启用pathinfo
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
}

4. 重启Nginx

修改完配置文件后,保存并重启Nginx服务。你可以通过Laragon的控制面板重启Nginx,或者使用命令行:

laragon restart nginx

5. 检查PHP配置

确保PHP的cgi.fix_pathinfo设置为1,以支持pathinfo功能。你可以在php.ini文件中找到并修改这个配置:

cgi.fix_pathinfo=1

6. 测试配置

完成上述步骤后,访问你的站点并测试pathinfo功能是否正常工作。例如,访问http://your-site/index.php/controller/action,看看是否能正确解析。

7. 调试

如果问题仍然存在,可以查看Nginx的错误日志文件,通常位于:

C:\laragon\logs\nginx\error.log

通过日志文件中的错误信息,可以进一步排查问题。

总结

通过正确配置Nginx的fastcgi_param和启用pathinfo功能,可以解决“no input file specified.”错误,并确保URL中的pathinfo能够被正确解析。如果问题仍然存在,建议检查文件路径和权限设置,确保Nginx能够正确访问PHP文件。