首先要了解,当你要访问一个网站的时候,你通过浏览器向某个网址发出请求,然后那个网址对应的服务器接收到请求并执行相应处理,然后返回一个响应给你的浏览器。如果这个响应内容是一份HTML文档,那么浏览器就会解析渲染这份HTML,展示出来给你看,就是你看到的网页。
那么服务器怎么组织这份HTML响应呢?就可以通过各种程序来计算、“拼凑”,比如Java、.NET、php等等。所以php是运行在服务器上的脚本。
虽然同样是脚本,过去javascript流行起来的时候,最大的用法却是让它作为HTML文档中的一部分,由服务器返回给客户端浏览器,然后javascript脚本在浏览器中被浏览器执行,进行各种处理(例如校验表单输入、动态改变页面DOM元素或样式、发出AJAX请求等等)。所以javascript大部分时候是运行在浏览器上的。这种情况下,对于服务器来说,它不“认识”这是javascript脚本,只当作普通文本字符串内容(是响应HTML文档内容的一部分)而已。
上面之所以没有说javascript是绝对运行在浏览器端的原因,是因为目前逐渐流行的node.js,是一项将javascript脚本运行在服务器端,完成和传统Java、php等服务器端web server相同功能的技术。其实,javascript脚本刚被发明出来的时候,是被设计用来做服务器端脚本的。估计连创始者也没想到,javascript会“绕”了这么一个大圈,但是处处大放光彩。
这两个就不能放在一起比,JavaScript是前端开发语言,弱类型语言,是浏览器解释执行的语言,PHP是服务器端代码,后台开发语言,在他们各自的领域,他们就是老大。但不能放在一起比。