一段代码在WINDOWS+PHP+MYSQL上运行正常,在LINUX下不正常

时间:2022-09-05 17:01:35
//添加一个用户
function adduser($user,$pass,$flag,$rname,$dirsize,$lmname,$lmtel,$lmmobile)
{
$retval=-1;
$table=gettable($user);
$path=getpath($user);
if(@mkdir($path,0777))
{
$db=mysql_connect("localhost","root");
mysql_select_db("dataswapdb",$db);
if(mysql_query("create table $table (filename CHAR(64),filesize INTEGER,delflag SMALLINT,uploadtime DATETIME,groupname CHAR(16),recvuser CHAR(16),remark CHAR(64),PRIMARY KEY(filename,groupname,recvuser))",$db))
{
if(mysql_query("insert into user_list values('$user','$pass','$flag','$rname','$dirsize','$lmname','$lmtel','$lmmobile')",$db))
{
$retval=0;
}
}
mysql_close($db);
if($retval!=0)
{
rmdir($path);
}
}
return $retval;
}

我不懂PHP,可单位的一个页面最近出了问题,一个用户注册页面提交不上去,注册页面调用ADDUSER的时候adduser返回的总是-1,用户注册不了。而以前很正常,没有问题,因为很久没有注册用户了,所以不知道什么时候开始不能用的,可是把这个站点和数据库拷到我windows的php+mysql环境里,用户可以正常注册,难道是我系统配置的问题?linux小要配置哪里啊?请高手指点。
是两个数据库不能写入的问题吗?

13 个解决方案

#1


if(@mkdir($path,0777))
{
$db=mysql_connect("localhost","root");
mysql_select_db("dataswapdb",$db);

你的$path变量需要注意大小写~~~在LINUX中,系统对路径大小写敏感~~~而WINDOWS不区分大小写~~一般出现你这样的问题都是这个原因造成的~~

#2


去掉@mkdir前面的@进行测试
还有你的数据库连接的时候也不返回提示信息, 这样你也不知道是哪里出问题了.

#3


$path 有没有问题啊?

#4


估计也是大小写问题

#5


另外$path如果带有“/”或者“\”的话在linux和windows下面需要转换一下

#6


大小写没有问题啊,都是小写的。
{
rmdir($path);
}
把这个行注释掉后,添加用户,报错后会保留(@mkdir($path,0777))建立的目录,是小写的

#7


看有没有写入权限
把要写入文件的 文件夹设位 777

#8


1、可能是权限的问题。

2、可能是路径、数据库名、表名、字段名等大小写问题。

#9


权限都是777,我怀疑是两句写数据库的代码没有写成功。
可为什么在WINDOWS下就正常,在LINUX下不成功啊。

#10


mysql_connect(..) or die("link failed");
mysql_select_db(..) or die("db select failed");
mysql_query(..) or die("query failed");
加上错误判断再看看结果!

#11


if(mysql_query("create table $table (filename CHAR(64),filesize INTEGER,delflag SMALLINT,uploadtime DATETIME,groupname CHAR(16),recvuser CHAR(16),remark CHAR(64),PRIMARY KEY(filename,groupname,recvuser))",$db))

这行运行出错,query failed,这个有什么错?啊?

#12


查出来了,就是上面那行的错误,注释掉他以下的就可以运行了。
这行有什么错啊?

#13


晕,数据库目录权限不是777,我记得我最初就是把他设成777的啊。
问题解决了,给分了。第一次发帖,大家多多照顾。

#1


if(@mkdir($path,0777))
{
$db=mysql_connect("localhost","root");
mysql_select_db("dataswapdb",$db);

你的$path变量需要注意大小写~~~在LINUX中,系统对路径大小写敏感~~~而WINDOWS不区分大小写~~一般出现你这样的问题都是这个原因造成的~~

#2


去掉@mkdir前面的@进行测试
还有你的数据库连接的时候也不返回提示信息, 这样你也不知道是哪里出问题了.

#3


$path 有没有问题啊?

#4


估计也是大小写问题

#5


另外$path如果带有“/”或者“\”的话在linux和windows下面需要转换一下

#6


大小写没有问题啊,都是小写的。
{
rmdir($path);
}
把这个行注释掉后,添加用户,报错后会保留(@mkdir($path,0777))建立的目录,是小写的

#7


看有没有写入权限
把要写入文件的 文件夹设位 777

#8


1、可能是权限的问题。

2、可能是路径、数据库名、表名、字段名等大小写问题。

#9


权限都是777,我怀疑是两句写数据库的代码没有写成功。
可为什么在WINDOWS下就正常,在LINUX下不成功啊。

#10


mysql_connect(..) or die("link failed");
mysql_select_db(..) or die("db select failed");
mysql_query(..) or die("query failed");
加上错误判断再看看结果!

#11


if(mysql_query("create table $table (filename CHAR(64),filesize INTEGER,delflag SMALLINT,uploadtime DATETIME,groupname CHAR(16),recvuser CHAR(16),remark CHAR(64),PRIMARY KEY(filename,groupname,recvuser))",$db))

这行运行出错,query failed,这个有什么错?啊?

#12


查出来了,就是上面那行的错误,注释掉他以下的就可以运行了。
这行有什么错啊?

#13


晕,数据库目录权限不是777,我记得我最初就是把他设成777的啊。
问题解决了,给分了。第一次发帖,大家多多照顾。