美文网首页
NginX+PHP中使用PhalApi总结

NginX+PHP中使用PhalApi总结

作者: loongod | 来源:发表于2018-08-31 23:50 被阅读63次

Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级 服务器/反向代理]服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

在Nginx+php+mySQL的服务器环境中,使用Flight框架。

实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法

error.png

写接口难免会有错误,但是发现找不到为什么出错,原来PHP中也是可以通过配置php-fpm.conf来记录执行php脚本的错误日志的。

在php-fpm.conf文件中添加,如果没有就添加如下:

error_log = log/php_error.log
catch_workers_output = yes

我的配置默认有了error_log。第一次我是添加到了error_log上面的一行。但是重启php-fpm时会报错,需要把catch_workers_output这个字段添加到[www]下面。如图:

php-fpm配置文件.png

然后我搜的说,还需要修改php.ini中的配置,没有则增加:

log_errors = On
error_log = "/usr/local/php/var/log/error_log"
error_reporting = E_ALL&~E_NOTICE

但是我用vim打开php.ini之后,就退出了,里面内容太多了,我就看不过来。

接着我就直接重启php-fpm了。

重启php-fpm:

[root@VM_0_17_centos www]# /www/wdlinux/phps/55/bin/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@VM_0_17_centos www]#

然后再请求,找到配置的error.log文件,如下图,发现错误信息已经记录在里面了。

errorLog.png

PHP echo中文乱码

Content-Type:用于定义用户的浏览器或相关设备如何显示将要加载的数据,或者如何处理将要加载的数据

汉字乱码.png
<?php
//解决php echo中文乱码
header("Content-Type:text/html;charset=utf-8"); 

$servername = "localhost";
$username = "*";
$password = "*";
$dbname = "dayWord";

$con = mysql_connect($servername,$username,$password);
if(!$con) {
        die('Could not connect: ' . mysql_error());
}else {
        echo "mysql connect success!";
}

//获取数据
mysql_select_db($dbname, $con);
$sql = "SELECT day, word, author FROM ana";
$result = mysql_query($sql);

while($row = mysql_fetch_array($result)) {
        echo "<br />";
        echo $row["day"] . " " . $row["word"] . "--" . $row["author"];
}

mysql_close($con);
?>
汉字正常显示.png

Vim显示行号:

vim 进入文件后,同时按shift+esc+enter键后,输入
:set number 或者 :set nu 

Linux清空文件内容:

[root@VM_0_17_centos logs]# :> filename
[root@VM_0_17_centos logs]# > filename
[root@VM_0_17_centos logs]# echo "" > filename
[root@VM_0_17_centos logs]# echo > filename

显示当前工作目录的绝对路径:

[root@VM_0_17_centos ana]# pwd
/www/web/default/ana

php-fpm相关命令

[root@VM_0_17_centos www]# which php-fpm
/www/wdlinux/phps/55/bin/php-fpm
[root@VM_0_17_centos www]# /www/wdlinux/phps/55/bin/php-fpm --help
Usage: /www/wdlinux/phps/55/bin/php-fpm {start|stop|force-quit|restart|reload|status}
[root@VM_0_17_centos www]#

使用LNMP做的服务器环境,然后我在index.php中添加了一个路由,请求的时候总是404,不加路由能请求成功,

location ~ \.php(.*)$ {
                fastcgi_pass  unix:/tmp/php-55-cgi.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $DOCUMENT_ROOT$fastcgi_script_name;
                fastcgi_param PATH_INFO $2;
                try_files $uri $uri/ /index.php;
                include fcgi.conf;
        }

原来是

try_files $uri $uri/ /index.php; 为例,当用户请求 http://servers.blog.ustc.edu.cn/example 时,这里的 $uri 就是/exampletry_files 会到硬盘里尝试找这个文件。如果存在名为 /$root/example(其中 $rootWordPress 的安装目录)的文件,就直接把这个文件的内容发送给用户。显然,目录中没有叫example的文件。然后就看$uri/,增加了一个 /,也就是看有没有名为/$root/example/的目录。又找不到,就会 fall back 到 try_files 的最后一个选项/index.php,发起一个内部 “子请求”,也就是相当于 nginx 发起一个 HTTP 请求到 http://servers.blog.ustc.edu.cn/index.php。这个请求会被location ~ \.php$ { ... } catch 住,也就是进入 FastCGI 的处理程序。而具体的 URI 及参数是在 REQUEST_URI 中传递给 FastCGI 和 WordPress 程序的,因此不受 URI 变化的影响。

相关文章

网友评论

      本文标题:NginX+PHP中使用PhalApi总结

      本文链接:https://www.haomeiwen.com/subject/ftxnrftx.html