Wamp环境安装错误+PHP常见错误总结

作者: JONE 分类: PHPer 发布时间: 2017-07-03 18:22

Wamp环境安装错误+PHP常见错误总结

现总结一些常见的 php错误,供大家学习交流参考。

一、w10问题:部分w10机器,80端口被占用:

解决办法参考文档:

http://jingyan.baidu.com/article/915fc4149b2b9d51394b2033.html

报如下错误时:

135-01

部分w10机器,80端口被占用

解决方法:

运行netstat -aon | findstr :80 

会发现pid是4的进程占用着80端口

打开运行—>输入 regedit —->回车

135-01-1

打开注册表:regedit

找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP

在右边找到Start这一项,将其改为0

重启系统,System进程不会占用80端口

二、服务存在,但控制面板,软件管理也找不到相应软件,无法卸载:

1、查看当前apache服务名

2cmd运行如下命令:’

net stop apache
sc delete apache
删除当前apache服务

3、重启电脑

4、安装httpd

三、报错,error 1316

135-03-1

解决方法:源码安装。

1、http://httpd.apache.org/,下载apache版本

2、将源码解压后,放到合适的地方

3、命令行下进入到apache下面的bin目录,输入

httpd -k install

把apache安装成windows后台服务。

4、在当前bin目录的命名行下,httpd –k start

   查看错误的行数,基本上是路径错误,解决错误

5、apache安装完成

 

四、查看那些程序占用80端口的方法

(和第一个安装错误,有些类似)

参考:  http://www.phpvar.com/archives/2545.html

1,在DOS小窗口里运行netstat -ano|findstr “80” (要注意的是findstr “80” 中间要加一空格隔开,否则会报该命令语法错误!)

要查看80端口被什么软件占用,首先得找出这个软件的pid(process id,进程id),用到的命令行:netstat -ano|findstr “80”

记住进程ID.

第2步,我们要执行下面的命令:tasklist|findstr “刚刚找到的进程的ID

或者使用进程管理器,从里边找进程ID.就知道哪个占用了

 

如果关于这个错误的解决办法想了解更多,以下是详情:

 

安装本地集成服务器环境wamp,安装过程中往往会提示80端口被占用,但却没提到80端口正被什么软件占用,这个得靠我们自己去查,去确认!本文手把手演示怎么查看80端口被什么软件占用!!

如果你正在安装wamp,并有上述提示,而你电脑上也有在运行skype这款软件,你可暂时先不看下面的文章,直接结束掉skype这个进程就可继续安装wamp了!因为,skype默认会占用80端口!

在不知道什么软件占用80端口的情况下,下面的文章内容100%会对你很有用,不管你信不信,反正我信了 ^_^

本文涉及的操作很大一部分都会使用到cmd命令,查看命令具体用法可参考这篇文章:http://www.phpvar.com/archives/2543.html

要查看80端口被什么软件占用,首先得找出这个软件的pid(process id,进程id),用到的命令行:

netstat -ano|findstr “80”

解析:

netstat -ano :

netstat表示显示协议统计和当前 TCP/IP 网络连接
-ano 是该命令的参数:以数字形式列出每个连接相关联的地址、端口号以及进程id

findstr 相当于添加过滤条件,表示:在所有查找出来的连接中查找过滤含有“80”字符串的连接,要注意的是findstr “80” 中间要加一空格隔开,否则会报该命令语法错误!

输入该命令按enter键,可看到如下界面:

135-04-1

红框行首 就是80端口,行尾3344 这个数字表示占用该端口的是pid为3344的那个进程,这个pid很关键,接下来会用到!

第2步,我们要执行下面的命令:

tasklist|findstr “3344”

解析:

tasklist 是列出所有进程,findstr “3344”是在列出的所有进程中查找筛选是否有pid为3344这个进程存在,若查找到有这个进程,可以看到类型下面的窗口:

135-04-2

好了,到这里,我们就可以看到pid为3344的软件名是:httpd.exe ,这个是什么软件的进程呢?

ctrl+alt+shift 调出任务管理器,定位到httpd.exe这个进程,如下图:

135-04-3

点击右键,第一项就是“打开文件位置”,在弹出的窗口中,我们可看到:

135-04-4

看路径,答案终于揭晓了,占用80窗口是服务器集成环境wamp!!

这只是个怎么查看80端口被什么软件占用的示范,查看其它端口的占用如果你不想了解命令行的使用,可以使用TCPView(端口查看工具)这个工具使用方便简单,怎么用,喜欢的自己去了解下

五、访问域名报错:You don’t have permission to access / on this server等问题的解决.

当修改了网站根目录的位置,必须重新指定该目录的权限。

使用<Directory></Directory>来指定目录访问权限。

135-05-1

详细:参考:  http://blog.csdn.net/xiongmao000738/article/details/9368413

 

安装完wamp之后,安装网上的教程设置虚拟路径,出现了问题,同样的问题由不同的原因导致。

1、httpd.conf去掉Include conf/extra/httpd-vhosts.conf前面的#。

2、httpd.conf中添加Listen 相应的端口,我的是8080

3、在conf\extra下面的httpd-vhosts.conf文件中添加

<VirtualHost *:8080>
DocumentRoot D:/wamp/www/aa
ServerName localhost
<Directory “d:/wamp/www/aa”>
Options Indexes
Order allow,deny
Allow from all
AllowOverride All
</Directory>
</VirtualHost>

 

4、然后调用localhost,就出现下面的错误:

Forbidden

You don’t have permission to access /on this server.

(没有设置这一切时,localhost访问的没有问题的)

5、最后发现是没有删掉httpd-vhosts.conf文件中的这段代码导致的:

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot “c:/Apache23/docs/dummy-host.example.com”
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog “logs/dummy-host.example.com-error.log”
CustomLog “logs/dummy-host.example.com-access.log” common
</VirtualHost>

删掉或者注释掉这段代码,再运行localhost就没有问题了。

6、localhost运行好使了,但运行localhost:8080却有新的问题:

Forbidden

You don’t have permission to access /index.phpon this server.

7、然后也是找了很多,多是说什么allow from all等等的问题。但无论我怎么设置都是这个问题。

几经波折,发现把Options Indexes FollowSymLinks 后面添加上 ExecCGI就好使了。

<VirtualHost *:8080>
DocumentRoot D:/wamp/www/aa
ServerName localhost
<Directory “d:/wamp/www/aa”>
Options Indexes FollowSymLinks ExecCGI
Order allow,deny
Allow from all
AllowOverride All
</Directory>
</VirtualHost>

六、PHP常见错误提示

(1)Fatal error: Call to undefined function……

函数不存在,可能的原因:

1、系统不存在这个函数且你也没自定义

2、有人会问,我在别的机器上就不报错。那是因为环境不同,这个函数在本机没开,怎么开?你百度函数名字,就能查到这个函数属于哪个dll,去php.ini里开启

(2)syntax error, unexpected T_STRING, expecting 。。。

严重语法错误,例如syntax error, unexpected T_STRING, expecting ‘,’ or ‘;’ in F:\phpnow\htdocs\index.php on line 4

后边标着行号,自己去检查那一行的标点就行

如果是 第三行 echo 1 后边没加;,报错会报 on line 4 ,on line 4,就是第四行

(3)Parse error: syntax error, unexpected T_VARIABLE in XXX.php on line XXX

这条语句是PHP常见的报错,一般是在XXX行的上一行,或者是XXX行,缺少分号。或者在双引号中使用双引号,且没有转义等等。

解决方法:找到XXX.php的XXX行,按照上面的分析,找到自己的错误,改正即可。

贴士:作为编程人员,要做到代码严谨,思维清晰,并且细心。人非圣贤孰能无过,但尽量避免这些因为粗心出现的错误,这样才能成为合格的程序员。

(4)Parse error: syntax error, unexpected ‘X’ in XXX.php on line XXX

这条语句依然是PHP常见的报错,报错原因是在XXX.php的XXX行,出现了PHP无法识别的字符。常常是因为function,if等需要‘{’、‘}’的地方没有闭合,或者在编程的时候,不小心在‘;’的后面误打了几个字符。

解决方法:找到XXX.php的XXX行,删除多出的字符,添加缺少的字符即可。

(5)syntax error, unexpected $end

逻辑忘了闭合  这个报错还有个特征,他会提示你最后一行代码报错,譬如你一共30行,他就告诉你 on line 30,这时候你别检查第三十行,你要把30行挨个,检查一遍,看看哪个标签没闭合。

一共3000行,他就告诉你 on line 3000,这时候你别检查这3000行了,如果你程序排版很乱,在3000行里找哪个括号是个很麻烦的事……我教你一招:

ctrl+a ctrl+d alt+f4

好了,你现在可以重写了。

(6)Notice:Undefined varialbe:……低级别错误

这是一个比较常见的错误,解决方法:error_reporting调整错误级别

发表评论

电子邮件地址不会被公开。 必填项已用*标注