Wamp环境安装错误+PHP常见错误总结
Wamp环境安装错误+PHP常见错误总结
现总结一些常见的 php错误,供大家学习交流参考。
一、w10问题:部分w10机器,80端口被占用:
解决办法参考文档:
http://jingyan.baidu.com/article/915fc4149b2b9d51394b2033.html
报如下错误时:
部分w10机器,80端口被占用
解决方法:
运行netstat -aon | findstr :80
会发现pid是4的进程占用着80端口
打开运行—>输入 regedit —->回车
打开注册表:regedit
找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP
在右边找到Start这一项,将其改为0
重启系统,System进程不会占用80端口
二、服务存在,但控制面板,软件管理也找不到相应软件,无法卸载:
1、查看当前apache服务名
2、cmd运行如下命令:’
net stop apache
sc delete apache
删除当前apache服务
3、重启电脑
4、安装httpd
三、报错,error 1316
解决方法:源码安装。
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键,可看到如下界面:
红框行首 就是80端口,行尾3344 这个数字表示占用该端口的是pid为3344的那个进程,这个pid很关键,接下来会用到!
第2步,我们要执行下面的命令:
tasklist|findstr “3344”
解析:
tasklist 是列出所有进程,findstr “3344”是在列出的所有进程中查找筛选是否有pid为3344这个进程存在,若查找到有这个进程,可以看到类型下面的窗口:
好了,到这里,我们就可以看到pid为3344的软件名是:httpd.exe ,这个是什么软件的进程呢?
ctrl+alt+shift 调出任务管理器,定位到httpd.exe这个进程,如下图:
点击右键,第一项就是“打开文件位置”,在弹出的窗口中,我们可看到:
看路径,答案终于揭晓了,占用80窗口是服务器集成环境wamp!!
这只是个怎么查看80端口被什么软件占用的示范,查看其它端口的占用如果你不想了解命令行的使用,可以使用TCPView(端口查看工具),这个工具使用方便简单,怎么用,喜欢的自己去了解下
五、访问域名报错:You don’t have permission to access / on this server等问题的解决.
当修改了网站根目录的位置,必须重新指定该目录的权限。
使用<Directory></Directory>来指定目录访问权限。
详细:参考: 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调整错误级别