我已经看了大约5个问题和博客文章,并尝试了所有他们告诉我没有运气。 我可以浏览www.example.com/phpinfo.php,而不是www.example.com/index.php。 我什至甚至使phpinfo.php符号链接的index.php和phpinfo.php仍然工作,而index.php不。
[admin@web01 www]$ cat /etc/nginx/conf.d/example.com.conf server { listen 80; server_name www.example.com; # Document root index index.php; root /var/www/sites/example.com/www; # Pass PHP scripts to FastCGI server location ~* \.php$ { include fastcgi.conf; try_files $uri =404; fastcgi_pass 127.0.0.1:9000; } } [admin@web01 www]$ cat /etc/nginx/fastcgi.conf fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method;fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr;fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200;
[admin@web01 www]$ ls -al /var/www/sites/example.com/www/*.php -rw-rw-r--. 1 admin admin 17 Jan 24 10:37 /var/www/sites/example.com/www/index.php lrwxrwxrwx. 1 admin admin 9 Jan 24 10:37 /var/www/sites/example.com/www/phpinfo.php -> index.php [admin@web01 www]$ ls -alZ /var/www/sites/example.com/www/*.php -rw-rw-r--. admin admin unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/sites/example.com/www/index.php lrwxrwxrwx. admin admin unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/sites/example.com/www/phpinfo.php -> index.php [admin@web01 ~]# ls -al /var drwxr-xr-x. 19 root root 4096 Dec 15 18:02 . dr-xr-xr-x. 23 root root 4096 Dec 15 17:48 .. drwxr-xr-x. 7 root root 4096 Dec 15 18:13 www [admin@web01 ~]# ls -al /var/www drwxr-xr-x. 7 root root 4096 Dec 15 18:13 . drwxr-xr-x. 19 root root 4096 Dec 15 18:02 .. drwxr-xr-x. 7 admin admin 4096 Jan 23 11:35 sites [admin@web01 ~]# ls -al /var/www/sites drwxr-xr-x. 7 admin admin 4096 Jan 23 11:35 . drwxr-xr-x. 7 root root 4096 Dec 15 18:13 .. drwxrwxr-x. 4 admin admin 4096 Jan 23 11:21 example.com [admin@web01 ~]# ls -al /var/www/sites/example.com drwxrwxr-x. 4 admin admin 4096 Jan 23 11:21 . drwxr-xr-x. 7 admin admin 4096 Jan 23 11:35 .. drwxrwxr-x. 10 admin admin 4096 Jan 23 11:21 html drwxrwxr-x. 2 admin admin 4096 Jan 27 09:00 logs lrwxrwxrwx. 1 admin admin 11 Jan 23 11:21 www -> html/public [admin@web01 ~]# ls -al /var/www/sites/example.com/html drwxrwxr-x. 10 admin admin 4096 Jan 23 11:21 . drwxrwxr-x. 4 admin admin 4096 Jan 23 11:21 .. drwxrwxr-x. 11 admin admin 4096 Jan 23 11:21 application drwxrwxr-x. 8 admin admin 4096 Jan 23 11:21 data drwxrwxr-x. 3 admin admin 4096 Jan 23 11:21 docs drwxrwxr-x. 3 admin admin 4096 Jan 23 11:22 library drwxrwxr-x. 6 admin admin 4096 Jan 27 15:57 public drwxrwxr-x. 3 admin admin 4096 Jan 24 09:33 scripts drwxrwxr-x. 4 admin admin 4096 Jan 23 11:21 tests [admin@web01 ~]# ls -al /var/www/sites/example.com/html/public drwxrwxr-x. 6 admin admin 4096 Jan 27 15:57 . drwxrwxr-x. 10 admin admin 4096 Jan 23 11:21 .. drwxrwxr-x. 4 admin admin 4096 Jan 23 11:21 assets drwxrwxr-x. 4 admin admin 4096 Jan 23 11:21 css -rw-rw-r--. 1 admin admin 17 Jan 24 10:37 index.php drwxrwxr-x. 4 admin admin 4096 Jan 24 09:33 js lrwxrwxrwx. 1 admin admin 9 Jan 24 10:37 phpinfo.php -> index.php
2014/01/24 10:37:52 [error] 8286#0: *15 FastCGI sent in stderr: "Unable to open primary script: /var/www/sites/example.com/www/index.php (No such file or directory)" while reading response header from upstream, client: XXX, server: www.example.com, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.example.com"
从location ... .php$行删除了try_files行,并编辑了php.ini的cgi.fix_pathinfo=0 。 意识到我一直没有重新启动php-fpm。 现在神奇的工作! 如果你能解释为什么phpinfo.php在整个工作期间工作,并且index.php不是(即使它们驻留在同一目录中,并且phpinfo.php是index.php的符号链接),你可以得到赏金。
尝试添加到你的nginx.conf:
fastcgi_index index.php;
例如你的nginx.conf文件的相关部分如下所示:
# Pass PHP scripts to FastCGI server location ~ \.php$ { fastcgi_index index.php; include fastcgi.conf; try_files $uri =404; fastcgi_pass 127.0.0.1:9000; }
如果没有指定一个文件,它会告诉fastcgi使用index.php。 为了logging,我正在使用补丁nginx 1.2.9(我改变了〜*因为这是它看起来在我的nginx.conf中)
在nginx服务器块conf中你的根目录是/var/www/sites/example.com/www
文件path是/var/www/sites/example.com/html/public
我知道你的phpinfo.php工作,但尝试使path相同。
此外,如果phpinfo工作,重命名该phpinfo.php index.php,看看它是否工作。