//windows服务器
$pict_directory = "rent\\".$perprotyNo."\\";//linux服务器
$pict_directory = "rent/".$perprotyNo."/";//兼容?
$pict_directory = 'rent'.DIRECTORY_SEPARATOR.$perprotyNo.DIRECTORY_SEPARATOR;
菜鸟提问,各位大侠轻喷
在开发的时候用的是xp系统,发现在生成路径时用“\\”作为目录分隔符没有问题,
但是传到客户linux服务器上就提示我没有权限,然后改成“/”就OK了。
网上查了一下说“/”在windows下也是可以的,但是某些时候会出问题(不明白什么时候的说)然后又查了一下说用DIRECTORY_SEPARATOR是最保险的,
但是我试了一下,发现在windows系统下把路径保存到mysql里面的时候分隔符丢失了,
必须要两个DIRECTORY_SEPARATOR才行,应该是第一个DIRECTORY_SEPARATOR作为转义字符了。但是如果windows下面需要用两个DIRECTORY_SEPARATOR,而linux只要用一个,那这个代码也谈不上兼容了吧?以上困惑,求解答,谢谢。

解决方案 »

  1.   

    "/"在Linux和Windows上是通用的如果你要保存到mysql的话,不要用手动方式添加转义字符,用mysql_escape_string函数
      

  2.   

    貌似我路径那边还真的没有用escape函数,sql语句改来改去后来就忘记加了,我再去试一试。另外mysql_real_escape_string和mysql_escape_string有什么区别吗?我代码都用的前者
      

  3.   

    统一使用路径符 /
    //windows服务器
    $pict_directory    = "rent/".$perprotyNo."/";
    //linux服务器
    $pict_directory    = "rent/".$perprotyNo."/";mysql_escape_string --  转义一个字符串用于 mysql_query 
    mysql_real_escape_string --  转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 
      

  4.   

    恩,手册不推荐使用mysql_escape_string
    用mysql_real_escape_string吧
      

  5.   

    多谢指点。现在是都用“/”了,主要是看到有人说DIRECTORY_SEPARATOR是最好,就试着改了下代码,
    结果忘记加mysql_real_escape_string在windows下面出问题了。