欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

各种问题解决方案总结【记录】(持续更新)

程序员文章站 2022-04-15 17:36:01
...

apache虚拟主机的配置方法和示例

1.首先修改C:/WINDOWS\system32\drivers\etc目录下的 hosts 文件,比如原来用【localhost】访问【htdocs】文件夹里的项目,现在想用www.test.com来访问本地项目,操作如下:

127.0.0.1 www.test.com
  • 1

添加成功后即可用 www.test.com访问

2.打开xampp\apache\conf\httpd.conf文件,搜索 “Include conf/extra/httpd-vhosts.conf”,确保前面没有 # 注释符,也就是确保引入了 vhosts 虚拟主机配置文件。

3、添加VirtualHost以支持多个站点,比如想把站点放在 C://php下,用www.test.com访问 
e:\xampp\apache\conf\extra\httpd-vhosts.conf文件中添加如下内容: 
复制代码 代码如下:


NameVirtualHost *:80
<VirtualHost *:80>
     ServerName www.test.com
     DocumentRoot "C:/php"
    <Directory "C:/php"> 
         Options FollowSymLinks IncludesNOEXEC Indexes
         DirectoryIndex index.html index.htm index.php
         AllowOverride all 
         Order Deny,Allow 
         Allow from all 
         Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
     ServerName localhost
     DocumentRoot "E:/xampp/htdocs"
    <Directory "E:/xampp/htdocs"> 
         Options FollowSymLinks IncludesNOEXEC Indexes
         DirectoryIndex index.html index.htm index.php
         AllowOverride all 
         Order Deny,Allow 
         Allow from all 
         Require all granted
    </Directory>
</VirtualHost>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

nginx虚拟主机的配置方法和示例

location 定义文件类型, 
.php$ 代表所有以 php 作为文件后缀的文件类型. 
root 定义 php 文件存放的路径, 当前以 “/www” 作为默认存放位置. 
fastcgi_index 定义 php 文件类型中的默认索引页 
fastcgi_param SCRIPT_FILENAME 定义了页面请求参数, 如客户端需要访问 /t1.php 则会自动读取 /www/t1.php文件, 如客户端访问 / 则自动读取 /www/index.php 文件 
include 定义fastcgi 配置信息将会被保存到 /usr/local/nginx/conf/fastcgi_params 文件中 
nginx最常用的方法是利用 tcp/ip 协议连接 phpfastcgi 接口, 因此要连接php必须先启动fastcgi程序.

找到nginx的配置文件【nginx.conf】 
下边加入:include vhosts; 
同级路径下创建vhosts文件,编辑加入以下内容

server{
        listen       80;
        server_name   www.test.com;
        root   /www;
            if ($uri ~ ^/MP_verify_(.+)\.txt$) {
                return 200 $1;
            }
        location ~* \.(eot|ttf|woff|svg|otf)$ {
           add_header Access-Control-Allow-Origin 'http://www.test.com';
           add_header Access-Control-Allow-Methods 'GET, POST';
        }

        location / {

         index  index.html index.htm index.php;
            #autoindex  on;
        }
        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直接读取不经过tomcat或resin
         location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
           { expires 15d; }
         location ~ .*.(js|css)?$
           { expires 1h; }


}

kill -HUP `cat /usr/local/nginx/logs/nginx.pid` #重启nginx
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

对于无法捕获的POST参数,如何抓去

$POST

$_POST是我们最常用的获取POST数据的方式,它是以关联数组方式组织提交的数据,并对此进行编码处理,如urldecode,甚至编码转换,识别的数据类型是PHP默认识别的数据类型 application/x-www.form-urlencoded

无法解析如text/xml,application/json等非 application/x-www.form-urlencoded 数据类型的内容
  • 1

HTTP_RAW_POST_DATA

前面说过PHP默认识别的数据类型是application/x-www.form-urlencoded,用Content-Type=application/json 类型,提交的POST数据这时候 POST使GLOBALS[‘HTTP_RAW_POST_DATA’] 可以获取到。因为在PHP无法识别Content-Type的时候,就会把 POST 数据填入到 $HTTP_RAW_POST_DATA 中。

1.需要设置 php.ini 中的 always_populate_raw_post_data 值为 On 才会生效
2.$_POST 与 php://input可以取到值时 $HTTP_RAW_POST_DATA 为空
3.不能用于 enctype="multipart/form-data"
4.PHP7中已经移除了这个全局变量,用 php://input 替代
  • 1
  • 2
  • 3
  • 4

php://input 
php://input 可通过输入流以文件读取方式取得未经处理的POST原始数据,允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小。

不需要任何特殊的 php.ini 设置
不能用于 enctype="multipart/form-data"
  • 1
  • 2

小结 
上面了介绍了一下我们目前使用PHP获取POST数据的三种方式,当我们以后使用PHP来获取POST数据的时候用$_POST或者php://input就好了。虽然HTTP_RAW_POST_DATA可以达到和php://input一样的目的,但是会给内存带来较大的压力,官方也注意到了这个问题,所以在PHP7就果断移除了这个不好用的东东。。。 
WAMP不能正常启动:

    WAMP不能启动, 一直处于红色图标(正常启动为绿色吧)
    考虑是端口的问题,我找到wamp文件夹中的wamp\bin\apache\apache2.2.22\conf路径下的httpd.conf文件,将:
    #Listen 12.34.56.78:80
    Listen 80
    把Listen 80改成Listen 8088(因为tomcat默认是8080,不想以后冲突),然后再启动wampapache发现可以了,wamp显示为绿色,OK,搞定!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

解决启用本地软件xampp端口被占用6种方法

我们在学做网站教程中讲到,做网站可以先使用本地环境来模拟网站空间制作网站,这样很方便的修改网站各方面内容。但很多学建站学员都会遇到启用本地环境软件时,会提示端口被占用,无法启动成功。那么应该如何解决本地软件xampp端口被占用的问题,这里学做网站论坛提供了6种方法。
    **第一种解决方法:**
        检查自己的本地环境软件安装路径中是否有中文,如地址栏中的路径为:J:\常用图标\常用网站,这就是包含了中文。解决方法:重新下载xampp软件安装到英文或是拼音的文件夹中(不要直接复制之前的文件。)
    **第二种解决方法:**
        提示80端口被占用,80端口是网络访问端口,是本地环境默认的访问端口。我们在学习如何做网站时,用的最多的就是80端口,但很多学员的电脑里安装了某个软件,它已经占用了80端口,那么本地环境就无法再启用80端口了。
        我们可以将本地环境的80端口改成8080端口。方法如下:
        找到你的xampp安装的文件夹,进入apache文件夹,再进入conf文件夹,找到httpd.conf文件,用记事本打开。
        在httpd.conf这个记事本中,点击编辑---查找,查找Listen 80,可以看到如下内容:
        #Listen 0.0.0.0:80
        #Listen [::]:80
        Listen 80
        把上面的80改成8080,如下:
        #Listen 0.0.0.0:8080
        #Listen [::]:8080
        Listen 8080
        然后打开xampp软件,就可以启用了。这个时候本地路径访问地址变成了http://127.0.0.1:8080/。
    **第三种解决方法:**
        用一个进程结束软件“加速人生”结束所有进行,这样电脑中占用80端口的软件也会被停掉,然后直接开启XAMPP服务即可。软件下载地址:http://www.updrv.com/fast/
    **第四种解决方法:**
        使用软件IceSword来停止端口。(软件下载地址:http://u.115.com/file/f42e2e8a40)
        打开软件,点击端口,在本地地址列表下找到***.***.***.***:80形式的地址,然后查看它所属的进程ID
        点击进程,根据第一步找的进程ID,找到进程,然后结束掉,这样就可以把占用80端口的程序关掉。
    **第五种解决方法:**
        win7系统用户无法使用IceSword软件,可以使用和IceSword一样功能的能在win7下运行的软件: XueTr(软件下载地址:http://u.115.com/file/f4ce8a8570)
        使用方法:
        打开软件,点击网络选项,在本地地址列表下找到***.***.***.***:80形式的地址,然后查看它所属的进程ID
        点击进程,根据第一步找的进程ID,找到进程,然后结束掉,这样就可以把占用80端口的程序关掉。

    **第六种解决方法(推荐使用):**
        打开“运行”,windows系统打开方式如下图:启用本地软件xampp端口被占用6种方法1
        在弹出的窗口中输入cmd,并确认:
        启用本地软件xampp端口被占用6种方法2
        在打开的命令提示符中输入:netstat -ano 命令,然后回车:启用本地软件xampp端口被占用6种方法3
        打开任务管理器(打开方式:按键Ctrl+ALT+Delete),打开服务,找到PID并选择软件结束进程:启用本地软件xampp端口被占用6种方法4
        重启XAMPP软件。/li>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

编码格式总结 
● 中国人民通过对 ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字。

    ● 汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB2312 中的编码,同时扩充了很多。

    ● 中国是个多民族国家,各个民族几乎都有自己独立的语言系统,为了表示那些字符,继续把 GBK 编码扩充为 GB18030 编码。

    ● 每个国家都像中国一样,把自己的语言编码,于是出现了各种各样的编码,如果你不安装相应的编码,就无法解释相应编码想表达的内容。

    ● 终于,有个叫 ISO 的组织看不下去了。他们一起创造了一种编码 UNICODE ,这种编码非常大,大到可以容纳世界上任何一个文字和标志。
            所以只要电脑上有 UNICODE 这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成 UNICODE 编码就可以被其他电脑正常解释。

    ● UNICODE 在网络传输中,出现了两个标准 UTF-8 和 UTF-16,分别每次传输 8个位和 16个位。

            于是就会有人产生疑问,UTF-8 既然能保存那么多文字、符号,为什么国内还有这么多使用 GBK 等编码的人?因为 UTF-8 等编码体积比较大,
            占电脑空间比较多,如果面向的使用人群绝大部分都是中国人,用 GBK 等编码也可以。但是目前的电脑来看,硬盘都是白菜价,
            电脑性能也已经足够无视这点性能的消耗了。所以推荐所有的网页使用统一编码:UTF-8。