A. nginx配置支持php
nginx本身不支持php解析,需要配合php-fpm来配置。
location~.php${
root/var/www;#指定php的根目录
fastcgi_pass127.0.0.1:9000;#php-fpm的默认端口是9000
fastcgi_indexindex.php;
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
includefastcgi_params;
}
centos下安装php-fpm (php及其它组件已经安装过的情况)
yuminstallphp-fpm
启动php-fpm 并设置开机启动 (centos 7)
systemctlstartphp-fpm
systemctlenablephp-fpm
B. php程序调试方法总结
相信很多朋友们都有调试程序的经历 然而很多时候调试程序是痛苦而又漫长的过程;它不仅需要细心 更需要耐心 切忌心浮气躁 但是当找出问题并顺利解决它时 又会给人无比激动的喜悦 这里总结一下笔者在程序调试中的使用的原则 工具 以及方法 这里需要说明的是 某些原则性的东西 各种语言都是差不多的 而涉及到具体的工具和某些具体的调试方法 这里只涉及web开发方面的内容
总体原则
找出问题原因
程序需要调试 是因为程序有问题 而调试的第一目标是找到原因 常见调试方法 排除法: 当我们面对整个复杂的系统时 常常完全不知道问题出在什么地方;这个时候可以先将与问题不相关的地方排排除 逐渐缩小调试范围 独立模块法: 大部分程序都有模块结构 将可疑模块单独拿出来 模拟输入相应的操作数据 看是否出现问题 比较法 如果程序或系统是基于某个平台时 可以先看看其他基于本平台的程序或系统 找出是平台问题还是本程序问题 很多时候这种方法是用来排除不成熟平台上的隐藏问题 对比法 对于自己实现的程序 可能已经有相应的开源的模块 可以把这些程序源码找出来 和自己的程序进行对比 这样不仅节省时间 还能借鉴别人的优秀之处
问题定位
问题原因的多种多样 可能这个时候你只能知道是什么样的问题 可能与什么相关 这个时候就需将出现的代码段找出来 而需要做到这一步 一般开发环境为我们提供很多实用工具 借助这些工具 可以一步一步地查看程序的输入和输出 根据每一步的输入输出 定位问题
有一部分很厉害的人 可以通过阅读代码 找到出现问题的地方 但是很多问题都是调试者自己因为疏忽造成的 而要通过这样方式去查找问题 几乎是不可能的 因为已经形成固定的思维定势
解决问题
找到问题的原因和相应代码行 解决它很多时候是一件比较简单的事 因为这些问题往往自己疏忽或者自己考虑不周 但是某些时候并不总是这样的 而是由于外部环境造成的 比如你的网站访问的人数增多 你当初没有考虑到这些数据压力 同时也没有考虑到高度并发性的问题 这个时候问题解决起来是你觉得比较棘手 而要解决这样的问题 不仅仅要专注程序 更要从系统架构方面着手 综合各方面的知识 进行全面的考虑
web开发常用调试工具
俗话说 工欲善其石 必先利其器 对于程序的调试 也必须借助外部工具 这里介绍几种在开发web程序中常常用到的工具
xdebug xhprof php性能调试工具 他们都是php的一种扩展 可以很方便的安装和配置 这两个工具主要是将你程序的内部运行状况 调用函数以一种简洁的方式告诉你 让你对程序在什么地方占用过多的资源 那些地方需要进行优化一目了然 顺便提一下 xdebug生成的profile文件一般借助winCacheGrid查看
firephp firbug 前者主要是php的调试工具 而后者是web开发必不可少的工具 它不仅能查看请求 还能调试js css
在ie下面可以使用HttpWatch 如果需要将数据做深入分析 可以使用抓包工具
php中常使用的调试函数 error_report var_mp print_r var_export
mysql apache/nginx的常用的调试技巧 分析他们日志文件也是相当重要 在linux下查看日志文件的常用命令 cat more less grep awk sed
常见的调试技巧和方法
下面以我调试的程序来介绍一下具体的调试方法和技巧
例子 这是一个php开发的游戏引擎 主要功能提供双发球员移动位置 状态 传球 技能等功能控制 整个程序通过xml文件保存结果 突然某天 有两个用户进行比赛 返回的xml不符合正常的结构 从返回的结果来看 球员的移动位置有些不正常 其中少了某些步骤 于是决定从游戏的AI入手查找 但是也没有发现此处有什么异常 最后将输入的球员数据打印出来 然后将中间产生的数据也打印出来 结合程序的处理逻辑 发现是这两个用户有同一个球员 因此导致在处理的时候 两个人的球员出现混乱 找到原因后 就将这个以球员标识改为以球队和球员共同决定即可
例子 程序刚上线 有些热心的朋友们喜欢对程序进行一些压力测试 某次突然 w的请求很大的一个静态资源 直接导致硬盘瘫痪 对于这种情况 必须查看访问日志 才知道发生什么事 否则人家对你攻击了 你还找不到原因 当然对于这样的攻击 直接把静态资源放到cdn上 另外 随着访问用户量的增大 系统的压力增大 反应逐渐变慢 我们不得不考虑 以前只需要 几毫秒能处理的程序 现在需要 几秒 这个时候程序的并发性设计就很重要了 否则会造成数据异常的情况
例子 使用外部软件出现异常 例如使用memcached的时候 如果某台没有启动或者不能使用了 这个时候nginx一般就会对某些使用memcache的请求返回 是不是感觉有点无厘头 可以考虑改写memcahce 的php扩展了
lishixin/Article/program/PHP/201311/21278
C. 如何编译windows nginx php
作了N多次php环境的搭建,网上的方法还真是多,但是实际操作起来总有一些大大小小的出入,很多错误经常让我纠结不已.久病成医,渐渐地我自己就总结出了一些经验。自我感觉良好。
这种方法并非以前所流行的apache 加 php_mole 的方式运行,我是采用nginx 作为web服务器,以fastcgi的方式运行php。
linux下编译:
nginx我还是习惯选择8.54的版本,它的编译依赖以下几个软件包,解压这些源码包,在configure中设置好这些源码的路径,nginx在编译的时候会自己将他们编译进去的:
pcre: 主要用于rewrite等模块
zlib:这个不用说了
openssl: 如果你还知道https这个东西,那么你懂的~~~(当然你可以不需要这个功能)
md5 /sha1: 这两者都是用于生成信息摘要的希哈算法,这俩个东西不是必须的,但是我发现如果不选择其中一个那么openssl是不会成功地编译进nginx的
下面是我自己写的一个安装脚本,有temp-path字样的编译选项所设置都是nginx在运行时产生的临时文件的路径,pid-path,lock-path也是临时文件路径,log-path是日志文件路径,我因为自己机子上一些权限的问题所以要设置一下.一般情况下其实这些是不必要的,nginx默认会统统把生成的这些文件放在自己的安装目录下.
tmp=/tmp/nginx
log=/home/jsck/log
pcre=~/Downloads/pcre-8.02
zlib=~/Downloads/zlib-1.2.5-src
openssl=~/Downloads/openssl-0.9.8q
md5=~/Downloads/md5-1.3.0
./configure --prefix=/usr/local/nginx \
--http-proxy-temp-path=${tmp}/nginx-proxy.tmp \
--http-fastcgi-temp-path=${tmp}/nginx-fcgi.tmp \
--http-uwsgi-temp-path=${tmp}/nginx-uwsgi.tmp \
--http-scgi-temp-path=${tmp}/nginx-scgi.tmp \
--http-client-body-temp-path=${tmp}/nginx-client.tmp \
--pid-path=${tmp}/nginx.pid \
--lock-path=${tmp}/nginx.lock \
--http-log-path=${log}/http.log \
--error-log-path=${log}/http-error.log \
--with-pcre=$pcre \ #pcre 源码包的路径
--with-zlib=$zlib \ #zlib 源码包的路径
--with-http_ssl_mole \ #起用ssl支持
--with-openssl=$openssl #openssl 源码包路径
make
make install
php(5.2)的编译可以复杂点,也可以简单点,因为我们编译php时主要目的是编译它的脚本引擎和一些核心库,很多外围的东西不一定非要在编译php的时候加进去,可以在需要的时候将它们编译成扩展库再修改配置文件来加载它们。
我的编译代码如下:
./configure --prefix=/usr/local/php \
--with-mysql=/usr/local/mysql \#设置mysql的安装路径
--enable-fastcgi \ #开启fastcgi支持
--enable-debug #支持调试
make
make install
其实关于mysql的那一句都是可以不要的,只是我懒得再编译一次mysql扩展,所以就这样把它直接编译进php了,这样做的前提是你必须先安装mysql。
令外还有一些注意事项:编译php时必须确保系统中拥有libxml2与libxml2-dev这俩个软件包,因为php默认会将xml的功能编译进去,所以xml的支持是必不可少的。还有一个就是autoconf这条命令了,在编译扩展的时候,phpize会调用系统中的这个命令来生成扩展包的configure文件,没有它你就不能作扩展了,这一点也是要记住的,毕竟linux下的php不像windows版那样事先把所有的扩展都编译好了。
至于window下nginx,php的安装就没有什么难度了,下个zip包,解压就能用,只要稍微配置就可以了.
配置:
如果只是想让php能运行的话那么直接输入命令:
./php-cgi -b 3344
这样就开启了php的fastcgi进程了,-b参数是绑定该进程的侦听端口,随便找个没用的端口填就可以了,这里绑定的是3344.
然后在nginx的配置文件中加上这么几行:
location ~ \.php$ {
root /home/jsck/www; #这是你网站的根目录
fastcgi_pass127.0.0.1:3344; #这里指定了fastcgi进程侦听的端口,nginx就是通过这里与php交互的
fastcgi_index index.php;
fastcgi_paramSCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
如果要改nginx的侦听端口的话找到"listen"这么一项,改就是了.运行nginx,在/home/jsck/www目录中写一个测试文件test.php:
<?php
phpinfo();
?>
访问http://localhost:8080/test.php,如果显示了php所以的配置信息,那么就基本没什么问题,已经可以用这个环境写些php代码了.
至于php的调试器我选择xdebug,不为什么,习惯所致。加载xdebug时,在配置文件中的写法根据系统的不同好像也有点不同。linux下是:zend_extension_debug=<path>,window中加载的dll有两种,一种文件名会带有ts的后缀,这种要这要样写:zend_extension_ts=<path>另外一种就这样:zend_extension=<path>,path一定要写绝对路径。虽然ts为何意我也不是很清楚,但是这些设置是一定不可以搞错的。
设置好后重新运行php-cgi,然后重新访问test.php,如果有xdebug的那一块出现了,那么就成功了.
当然这是一个很简单的配置,只能让你运行php,要想真正做成你需要的开发环境,还需要你根据自己的需要修改php和nginx的配置文件,这些配置内容很多,我自己也在学习中,就不好多讲了.
另外有一点需要注意,php的配置文件在它的源码包中有两个:php.ini-dist和php.ini-recommended,分别是针对生成环境和开发环境的配置.你需要把其中一个改名为php.ini.重启后查看phpinfo()的页面,靠上的地方有一项"Loaded Configuration File",它的值如果就是你的php.ini的路径,那么就没问题了,如果不是话,就看看上面一项"Configuration File (php.ini) Path",你把你的php.ini文件移到这个目录下在重启就可以了.因为php默认会在这个路径下寻找php.ini的.当然你也可以在运行php-cgi的时候设置你的php.ini路径,比如这样:
php-cgi -b 3344 -c /home/jsck/php.ini
这样就是把/home/jsck/php.ini这个文件作为配置文件了.
按钮!!
D. 如何在 OSX 上架设 Nginx+MariaDB+PHP 服务器
打开“Mac App Store”下载并安装“Xcode”。
打开“Xcode”,按下同意并接受Xcode的使用条款。
打开“终端机(Terminal)”,输入下面的指令并且安装Homebrew。
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
输入下面的指令让其他程式知道Xcode的位置。
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
之后,“按此”基或下载最新版本的X11并且安装。
之后建立X11的符号链接(软链接)。
sudo ln -s /opt/X11 /usr/X11
之后使用下面的指令查看透过Homebrew安装的套件。
brew list
之后输入下面指令查看当前系统变数。
$PATH
打开“.bash_profile”并修改系统变数。
vim ~/.bash_profile
将“/usr/local/bin”放在“/usr/local/sbin”之前。例如搏乎伍︰
export PATH=~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/git/bin:/opt/local/bin
接着,请参考文章“[教学] 在 OSX 10.8 上设定 Postfix 邮件传送代理 (MTA)”设定Postfix。
启用Postfix。
sudo postfix start
安装 dnsmasq 设定 DNS
透过Homebrew安装dnsmasq,以加速网路存取速度。
brew install dnsmasq
复制和编辑dnsmasq.conf。
mkdir /usr/local/etc
cp $(brew --prefix dnsmasq)/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
vim /usr/local/etc/dnsmasq.conf
更改dnsmasq.conf内的数值。
resolv-file=/etc/resolv.dnsmasq.conf
address=/.ld/127.0.0.1
listen-address=127.0.0.1
建立并编辑DNS解析文件。
sudo vim /etc/resolv.dnsmasq.conf
在“resolv.dnsmasq.conf”文件内贴上以下内容。
# Google DNS IPv6:
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844
# OpenDNS IPv6:
nameserver 2620:0:ccd::2
nameserver 2620:0:ccc::2
# Google DNS:
nameserver 8.8.8.8
nameserver 8.8.4.4
# OpenDNS:
nameserver 208.67.222.222
nameserver 208.67.220.220
设定开机自动执行dnsmasq。
sudo cp $(brew --prefix dnsmasq)/homebrew.mxcl.dnsmasq.plist /Library/LaunchDaemons
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
设定你的Hostname。
sudo scutil --set HostName foolegg
打开“系统设定”,在“网络”内分别选择“Wi-fi”和“Ethernet”,在“进阶”内设定“127.0.0.1”为DNS服务器。
安装 Nginx
输入下面指令关闭自动启用Apache。
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
之后透过Homebrew安装Nginx。
brew install nginx
安装完成后,复制和备份nginx.conf。
cp /usr/local/etc/顷稿nginx/nginx.conf /usr/local/etc/nginx/nginx.conf.bak
打开nginx.conf,删除所有内容,使用下面的内容取代。
# Nginx web server main configuration file nginx.conf
#
user www-data staff;
worker_processes 4;
worker_rlimit_nofile 8192;
error_log /usr/local/var/log/nginx/error.log;
#pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 10;
tcp_nodelay on;
gzip on;
client_max_body_size 100M;
#access_log /usr/local/var/log/nginx/access.log main;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
## FastCGI.
include /usr/local/etc/nginx/fastcgi.conf;
## For the filefield_nginx_progress mole to work. From the
## README. Reserve 1MB under the name 'uploads' to track uploads.
#upload_progress uploads 1m;
#include /etc/nginx/conf.d/*.conf;
#include /usr/local/etc/nginx/aegir.conf;
server {
listen 80;
server_name localhost;
server_tokens off;
#access_log /usr/local/var/log/nginx/access.log main;
root /usr/share/nginx/www/public_html;
location / {
root /usr/share/nginx/www/public_html;
index index.html index.htm;
##### Use this if you're going to install wordpress #####
#if (-f $request_filename/index.html) {
# rewrite (.*) $1/index.html break;
#}
#if (-f $request_filename/index.php) {
# rewrite (.*) $1/index.php;
#}
#if (-f $request_filename) {
# rewrite (.*) /index.php;
#}
#if (!-e $request_filename) {
# rewrite ^.+?(/wp-.*) $1 last;
# rewrite ^.+?(/.*\.php)$ $1 last;
# rewrite ^ /index.php last;
#}
#rewrite /wp-admin$ $scheme://$host$uri/ permanent;
##### End #####
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www/public_html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
之后建立Nginx的log资料夹和其它必要的目录。
sudo mkdir -p /usr/local/var/log/nginx/
touch /usr/local/var/log/nginx/error.log
touch /usr/local/var/log/nginx/access.log
sudo mkdir -p /usr/share/nginx/www/public_html
安装 MariaDB
透过Homebrew安装MariaDB。
brew install mariadb --use-llvm --env=std
取消TMPDIR设定。
unset TMPDIR
初始化MySQL数据库。请将5.5.30更改为你当前使用的版本编号。
cd /usr/local/Cellar/mariadb/5.5.30/scripts
mysql_install_db --user=`whoami` --basedir="$(brew --prefix mariadb)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
系统会提示错误,请忽略有关错误。下面的教学设定会更正错误。
安装 PHP
虽然OSX上已经安装了PHP,但是我们不会使用Apple的PHP。
输入下面的指令安装PHP。
brew tap josegonzalez/homebrew-php
brew tap homebrew/pes
brew install php53 --with-mysql --with-fpm --with-imap
brew install php53-xhprof
brew install php53-xdebug
brew install php53-uploadprogress
brew install php53-memcached
brew install php53-imagick
打开并修改php.ini。
vim /usr/local/etc/php/5.3/php.ini
搜索
extension=php_zip.dll
在下面加上以下内容,请更改版本编号。
extension="/usr/local/Cellar/php53-xhprof/0.9.2/xhprof.so"
extension="/usr/local/Cellar/php53-uploadprogress/1.0.3.1/uploadprogress.so"
extension="/usr/local/Cellar/php53-memcached/2.1.0/memcached.so"
extension="/usr/local/Cellar/php55-imagick/3.1.0RC2/imagick.so"
zend_extension="/usr/local/Cellar/php53-xdebug/2.2.1/xdebug.so"
到“PHP手册”寻找你身处地区的时区。修改php.ini内的“date.timezone”变数的数值。
date.timezone = Asia/Hong_Kong
寻找以下3个变数的数值。如果找不到,请在档案的最尾部份加上3个变数和数值。
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
修改记忆体和上传限制的数值。如果变量前出现分号“;”,请将之删除。
memory_limit = 256M
post_max_size = 100M
upload_max_filesize = 100M
打开并修改php-fpm.conf档案。
vim /usr/local/etc/php/5.3/php-fpm.conf
搜索
pid = run/php-fpm.pid
在下面加上
pid = /usr/local/var/run/php-fpm.pid
之后删除下面4行变数和数值前的分号“;”。
pm.start_servers = 3
pm.min_spare_servers = 3
pm.max_spare_servers = 5
pm.max_requests = 500
按照下面修改“error_log”的数值。
error_log = /usr/local/var/log/php-fpm.log
之后建立log的符号链接(软链接)。
sudo ln -s $(brew --prefix josegonzalez/php/php53)/var/log/php-fpm.log /usr/local/var/log/php-fpm.log
开机启用服务
设定Nginx的启用服务。
sudo cp $(brew --prefix nginx)/homebrew.mxcl.nginx.plist /Library/LaunchDaemons/
sudo chown root:wheel /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
打开并修改“homebrew.mxcl.nginx.plist”。
sudo vim /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
在“homebrew.mxcl.nginx.plist”内删除以下内容。
<key>KeepAlive</key>
<true/>
<key>UserName</key>
<string>[YourUserName]</string>
开启Nginx。
launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
为软件建立资料夹。
mkdir -p ~/Library/LaunchAgents
设定MariaDB的启用服务。
cp $(brew --prefix mariadb)/homebrew.mxcl.mariadb.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mariadb.plist
设定PHP的启用服务。
cp $(brew --prefix josegonzalez/php/php53)/homebrew-php.josegonzalez.php53.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew-php.josegonzalez.php53.plist
完成MariaDB的设定。
sudo $(brew --prefix mariadb)/bin/mysql_secure_installation
为MySQL设定密码。
Enter current password for root (enter for none): [Enter]
Set root password? [Y/n] y
New password: [password]
Re-enter new password: [password]
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
测试PHP
建立并修改index.php。
vim /usr/share/nginx/www/public_html/index.php
输入并储存以下内容。
<?php phpinfo(); ?>
从新启动Nginx。
sudo nginx -s reload
打开浏览器,输入“http://localhost/index.php”查看是否成功运行PHP。
启动或停止MNMP
在桌面或其他位置建立Shell Script“mnmp.sh”。
vim mnmp.sh
在Shell Script“mnmp.sh”内加入以下内容,然后储存档案。
#!/bin/bash
case "$1" in
start)
# Start MariaDB
echo -e "Starting mariadb..."
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mariadb.plist
# Start PHP
echo -e "Starting php..."
launchctl load -w ~/Library/LaunchAgents/homebrew-php.josegonzalez.php53.plist
# Start Nginx
echo -e "Starting nginx..."
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
;;
stop)
# Stop MariaDB
echo -e "Stopping mariadb..."
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mariadb.plist
# Stop PHP
echo -e "Stopping php..."
launchctl unload -w ~/Library/LaunchAgents/homebrew-php.josegonzalez.php53.plist
# Stop Nginx
echo -e "Stopping nginx..."
sudo launchctl unload -w /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
;;
esac
exit 0
为Shell Script“mnmp.sh”加入可执行权限。
chmod 700 mnmp.sh
使用以下指令启动MNMP。
./mnmp.sh start
使用以下指令停止MNMP。
./mnmp.sh stop
PHP档案存取错误
有部份读者反映在存取PHP档案时出现错误。大家可以打开档案“/usr/local/var/log/nginx/error.log”查看错误的原因。
如果出现下面的原因,可能是因为php-fpm的问题。
[error] <NUMBER>#0: *<NUMBER> kevent() reported that connect() fa iled (<NUMBER>: Connection refused) while connecting to upstream, client: 127.0.0. 1, server: localhost, request: “GET /index.php HTTP/1.1″, upstream: “fastcgi ://127.0.0.1:9000″, host: “127.0.0.1″
大家可以使用“netstat -anp tcp | grep 9000”或者“lsof -i tcp:9000”查看占用Port 9000的进程,并且将其终止。之后使用下面指令开启php-fpm。
sudo /usr/local/sbin/php-fpm --fpm-config /usr/local/etc/php/5.3/php-fpm.conf
请再次测试是否成功存取php。如果成功,请依照下面设定自动启动php-fpm。
设定自动启动php-fpm
建立文件“~/Library/LaunchAgents/org.php-fpm.plist”。
E. php xdebug 断点调试nginx超时怎么办
比如你的网页盯圆这么悔毕写的<input name="uname" id="uname"><form action="login.php" method="post">...<input tpe="submit" name="submit" value="go" /></form>=================================<script type="text/javascript> function c(obj){ obj.action+="?uname="+document.getElementById('uname').value; }</script><input na
我碧则芹也是后盾人学会的楼主也可以经常去学习.
F. windows下nginx服务器下怎么装php
你可以使用护卫神.nginx大师,一键可以安装nginx+php
G. php 网站项目运行速度慢,什么原因
网页打开很慢原因很多,光凭借你说的无法判断具体原因,建议使用xdebug之类的查看具体执行时间,而且windows下的nginx搭配php用的是第三方的php-fpm吧,这个也有一定原因。
H. 安装nginx+php后,Php页面访问时提示404,但页面是存在的.
安装nginx+php后,Php页面访问时提示404,但页面是存在的,应该是下面的原因造成的:
这个是因为index.html 文件目录是nginx默认安装目录 /usr/local/nginx/html,而info.php 把它放到了 /data/web 下造成的,可以在nginx.conf配置文档里面找到相应的问题。
可以按照下面测试更改:
location ~ .php$ {
root /data/web;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
nginx -t && nginx -s reload