php配置文件问题 php.ini

由于做爬虫,经常会使用到php命令行模式。今天在操作命令行的时候,涉及到redis的使用,一直在报错class Redis not found。
但是在web端执行代码,redis是没问题的。

查了一下,web端和命令行端调用的配置文件有时是不一样的,可这样查看:

web phpinfo()
commond line: php -i

可以查看到命令行php.ini的路径

Configuration File (php.ini) Path => /usr/local/php/lib
Loaded Configuration File => /usr/local/php/lib/php.ini

在此文件加入redis的扩展即可。

mysql 空与null

mysql中判断”,和null只需要用 = ” 和is null就可以了。

有一个需求,需要统计一行数据字段中缺少的个数,使用到的算法如下:

SELECT if (street_name <> '',1,0) + if (address <> '',1,0) + if (subway_display <> '',1,0) + if (subway_station_id <> '',1,0) + if (subway_station_name <> '',1,0) as rs from table;

这里举个例子,主要是用if来判断字段是否为空,然后计数。
但是数据中有空值、有null,有0,这些我们都看作是空数据,肯定就不能用 = ”和 is null来判断了。逆向思维,用<> ”,则空值、null、0都满足要求啦

【MySQL】字符串截取之substring_index(按给定字符截取)

substring_index(str,delim,count)

  str:要处理的字符串

  delim:分隔符

  count:计数

例子:str=www.wikibt.com

  substring_index(str,'.',1)

  结果是:www

  substring_index(str,'.',2)

  结果是:www.wikibt

  也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容

  相反,如果是负数,那么就是从右边开始数,第N个分隔符右边的所有内容,如:

  substring_index(str,'.',-2)

  结果为:wikibt.com

 有人会问,如果我要中间的的wikibt怎么办?

 很简单的,两个方向:

  从右数第二个分隔符的右边全部,再从左数的第一个分隔符的左边:

  substring_index(substring_index(str,'.',-2),'.',1);

PHP常用数组

  1. 数组交集、差集:PHP中文网
  2. 反转key、value:array_flip()
    3.从一个数组中取出另一个数组的键值重复项:array_diff()
    4.array_unshift() ——用于向数组插入新元素。新数组的值将被插入到数组的开头。

    $a=array("a"=>"red","b"=>"green");
    array_unshift($a,"blue");
    print_r($a);
    
    Array ( [0] => blue [a] => red [b] => green )

postman 常见使用tips

1.测试https环境下接口

如下图所示,关闭ssl验证即可。

2.测试含session的接口

2.1找到session值

2.2在postman添加session值

把对应的session值放入,保存即可

3.模拟ajax请求

 1)提交模式:POST

 2)Headers增加参数:
 Content-Type    为:application/x-www-form-urlencoded
 X-Requested-With 为:xmlhttprequest

 3)Body选择为:x-www-form-urlencoded,参数为模拟AJAX提交的内容

wamp 配置https环境

生成证书步骤

主要看一下C:/wamp64/bin/apache/apache2.4.37/conf/extra下的http-ssl.conf与httpd-vhosts.conf文件的配置

http-ssl.conf:

<VirtualHost _default_:443>
#   General setup for the virtual host
DocumentRoot "C:\wamp64\www\b2b\admin\img"
ServerName img.ygoffice.com:443
ServerAdmin admin@example.com
ErrorLog "${INSTALL_DIR}/bin/apache/apache2.4.37/logs/img_error.log"
TransferLog "${INSTALL_DIR}/bin/apache/apache2.4.37/logs/img_access.log"
SSLEngine on
SSLCertificateFile "${INSTALL_DIR}/bin/apache/apache2.4.37/conf/ssh/img/1535611_img.ygoffice.com_public.crt"
SSLCertificateKeyFile "${INSTALL_DIR}/bin/apache/apache2.4.37/conf/ssh/img/1535611_img.ygoffice.com.key"
SSLCertificateChainFile "${INSTALL_DIR}/bin/apache/apache2.4.37/conf/ssh/img/1535611_img.ygoffice.com_chain.crt"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "${INSTALL_DIR}/bin/apache/apache2.4.37/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>
<Directory "C:\wamp64\www\b2b\admin\img">
    AllowOverride All
    Require local
    Require all granted
</Directory>
BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog "${INSTALL_DIR}/bin/apache/apache2.4.37/logs/img_ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

http-ssl.conf下配置443端口(https),httpd-vhosts.conf配置80端口

<VirtualHost *:80>
  ServerName img.ygoffice.com
  ServerAlias img.ygoffice.com
  DocumentRoot "C:\wamp64\www\b2b\admin\img"
  #HTTP_TO_HTTPS_START
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule (.*) https://%{SERVER_NAME}$1 [L,R=301]
    </IfModule>
  #HTTP_TO_HTTPS_END
  <Directory "C:\wamp64\www\b2b\admin\img">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    AllowOverride All
    Require local
    Require all granted
  </Directory>
</VirtualHost>

当然还要配置一下hosts文件。

最后:在配置过程中,可能会遇到apache重启不了。在C:/wamp64/bin/apache/apache2.4.37/bin目录下执行命令:

httpd -t

即可查看报错信息

win10 cmd修改编码为UTF-8

在win10 cmd命令窗口执行命令,经常遇见编码问题

1.临时修改,只作用于当前打开的窗口

进入cmd窗口后,直接执行“chcp 65001”

执行完后,cmd的编码格式就是UTF-8


2.永久修改,修改注册表。

在运行中输入"regedit",找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

然后“右键-新建”,选择“字符串值”,“名称”列填写“autorun”, 数值数据填写“chcp 65001”

然后:

再次在运行中输入cmd,就会自动把编码格式设置为UTF-8