前两天把之前做的一些网站迁移到新服务器,没想到在本地打开没问题,到了新环境就出现了各种问题,下面把遇到问题的解决办法列出来,以后再遇到方便查阅。
1.我用的是wampserver集成开发环境,在新服务器上安装的时候,提示缺少几个.dll文件(msvcr140.dll、msvcr110.dll),然后就去搜索引擎搜,需要去微软官网下载几个文件,安装上就好了,注意,选择32位还是64位的时候,是根据wampserver看的,不是你的操作系统位数。
2.PHP版本比当时开发时的版本高,旧版本的一些语法在新版本中做了改变,比如,在使用一个变量时,这个变量必须有值,旧版本中就不需要,解决办法是用isset()方法判断一下有没有定义,我遇到的是,预定义一个常量,保存系统变量$_SERVER['HTTP_REFERER'](上一页的URL),在第一次打开网站时,是没有上一页的,所以会报notice警告,这时用isset()判断一下$_SERVER['HTTP_REFERER']存不存在就可以了。
3.还有一个问题也是因为php版本导致的警告,PHP5.3以上默认只能传递具体的变量,而不能通过函数返回值传递。
1
2
3
4
5
6
7
8
|
//增删改模型
protected
function
aud
(
$_sql
)
{
$_db
=
DB::
getDB
(
)
;
$_db
->
query
(
$_sql
)
;
$_affected_rows
=
$_db
->
affected_rows
;
DB::
unDB
(
$_result
=
null
,
$_db
)
;
return
$_affected_rows
;
}
|
这是我之前写的,第六行报错Strict Standards: Only variables should be passed by reference in,现在只要把$result拿出来单独赋值后再放在方法参数里就可以了。
1
2
3
4
5
6
7
8
9
|
//增删改模型
protected
function
aud
(
$_sql
)
{
$_db
=
DB::
getDB
(
)
;
$_db
->
query
(
$_sql
)
;
$_affected_rows
=
$_db
->
affected_rows
;
$_result
=
null
;
DB::
unDB
(
$_result
,
$_db
)
;
return
$_affected_rows
;
}
|
4.安装完wampserver最好配置一下环境变量。右击我的电脑->属性->高级系统设置->环境变量,找到PATH,点编辑,然后复制wampserver目录下的bin\mysql\mysql5.7.14\bin,添加到PATH里面。
5.安装完wampserver需要手动修改mysql的密码,修改方法见【转】MySQL——修改root密码的4种方法(以windows为例) 。
6.我还遇到一个不知道由什么原因导致的错误,
1
2
3
4
5
6
7
8
9
10
|
//show
private
function
show
(
)
{
parent
::
page
(
$this
->
_model
->
getAllContentTotal
(
)
)
;
$_object
=
$this
->
_model
->
getListContent
(
)
;
$_limitobj
=
$this
->
_model
->
getListLimitContent
(
)
;
$_floor
=
$this
->
_model
->
getListContentTotal
(
)
;
$_total
=
$this
->
_model
->
getAllContentTotal
(
)
;
.
.
.
.
.
.
}
|
这是修改后的,如果把$_limitobj = $this->_model->getListLimitContent();放到这个方法的第一行执行,就会导致页面加载不出来,报http error 500,只要把上面那行代码不放到第一行执行就可以了,奇怪的是在本地测试一点问题没有。
7.还有一个是最近安装wampserver遇到的问题,刚安装完后访问出现You don't have permission to access / on this server,但在服务器本地访问却没问题,就考虑到可能是Apache的访问规则没配置好,因为开了虚拟主机,所以要配置httpd-vhosts.conf文件。下面是没做更改前的配置,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# Virtual Hosts
#
<
VirtualHost *
:
2020
>
ServerName
localhost
ServerAlias
localhost
DocumentRoot
G
:
/
php
/
wamp
/
www
<
Directory
"G:/php/wamp/www/"
>
Options
+
Indexes
+
Includes
+
FollowSymLinks
+
MultiViews
AllowOverride
All
Require
local
<
/
Directory
>
<
/
VirtualHost
>
#
|
注意到Require local这一行,只允许本地访问,需要把这行改成Require all granted,就可以了。
持续更新...