LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1148|回复: 2

windows下写的php文件访在linux服务器下访问时一片空白。

[复制链接]
发表于 2011-1-5 20:26:23 | 显示全部楼层 |阅读模式
windows下写的php文件放在linux服务器下访问时一片空白。

情况是这样的,之前在win下写了一个叫info.php的php文件,内容是:
<?php

phpinfo();

?>
  作用是查看当前的php环境。这个文件在win下执行正常,但是放在lamp环境下一打开变成一片空白了。
  后来有网友猜是因为win与linux换行的区别,于是对此文件执行了一下: sed -i 's/\r$//' info.php 
  还真的解决了。
 
  这几天用eclipse for php写了一个网站,在win下执行正常,但放到linux下一访问又是一片空白,查看在浏览器中查看源文件就只有几行html文档头,如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
</HEAD>
<BODY>
</BODY>
</HTML>

感觉php根本没有执行于是又用sed访问执行了一遍,没有效果,不知道原因是什么?  
    
  
  另外想到,像广泛使用的discuz、phpwind、dedecms、wordpress,都是同一份代码在什么环境下都可以直接用的,不知道他们又是如何规避不同平台的问题的呢?  
    
 
 楼主| 发表于 2011-1-6 11:36:19 | 显示全部楼层

问题已经解决

我的问题是下面第二种造成的。



1. linux执行windows下编辑的php文件一片空白
  windows下编写的文件在linux环境中访问是一片空白。 
  在windows中写的代码,php代码中可能会使用到换行符,比如<?='\r\n' ?>,比linux多一个\r,所以有可能出现windows下的文件放到linux环境中读不到的问题,访问php页面一片空白。可以使用下面方法解决。
  sed -i 's/\r$//' info.php
  上面可以去年info.php文件中的多余的\r,解决问题。
  如果是在windows下,可以把文件用如notepad++或editplus之类的打开另存一个文件即可解决。

     向下批量替换
     find /目录 -type f -name php | xargs sed -i 's/\r$//' *.php
   

2. 错误被抑止了
   这个问题郁闷了好一段时间,并且还发贴求救,最终查明原因是因为环境不同,php在执行时报错了,但是由于环境不同,所以错误被抑止了,没有在网页上显示。
 找到php.ini中的 display_errors = Off, 设成On,刷新页面,错误就出现了。


3. 编码原因造成网页访问一片空白
  比如在网页中有汉字,编码用的是utf-8,但是保存文件用的是gbk,那么网页在解析时html的结构由于编码长度不同造成错误,无法解析,所以也会一片空白。
回复 支持 反对

使用道具 举报

发表于 2011-1-12 14:52:23 | 显示全部楼层
编码吧 编辑器换行符问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表