安装 php-fpm 后,浏览器访问 php 时可能会报 No input file specified. 错误,意思是说找不到相应的 PHP 文件。这个是 PHP 常见的错误之一,主要原因是找不到工作目录所导致的,需要编辑 php.ini 文件,在 open_basedir 参数中加入 nginx 的 root 目录。
解决方法
查看 nginx 日志,错误提示:failed to open stream: Operation not permitted,意思是权限不足。
2020/03/23 22:39:12 [error] 885#0: *80 FastCGI sent in stderr: "PHP message: PHP Warning: Unknown: open_basedir restriction in effect. File(/Users/pieruo/www/version.php) is not within the allowed path(s): (/Users/pieruo/Documents/www/:/usr/local/var/www/:/tmp/:/proc/) in Unknown on line 0PHP message: PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0Unable to open primary script: /Users/pieruo/www/version.php (Operation not permitted)" while reading response header from upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /version.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost"
解决方法:编辑 php.ini 文件,在 open_basedir 参数中添加 PHP 的工作目录,本例以 /Users/pieruo/www 为例。
1. 进入 php-fpm 的根目录
cd /usr/local/etc/php/7.3/
2. 编辑 php.ini 文件
vim php.ini
3. 修改 open_basedir
修改 open_basedir 参数的值,加入 nginx 的 root 目录,修改后的内容如下。
[mark_a]open_basedir = /Users/pieruo/Documents/www/:/Users/pieruo/www/:/usr/local/var/www/:/tmp/:/proc/[/mark_a]
结束语
我们手动安装 LNMP 环境的时候,经常会遇到各种各样的一些错误提示,当我们遇到访问 php 提示 No input file specified 的时候可以通过在 php.ini 中添加工作目录的方式解决。如果有任何意见或建议,欢迎在下方留言。