php在linux下调用system的问题

Jim@luckeeinc.com 2012-03-29 09:53:52
请教大家一个问题
$cmd = "\"".$basedir."bin\mysqldump.exe\" --default-character-set=latin1 -uroot -ptest ".$this->sql_handle->database." > ".$doc_root."\\test\\test.sql";
$stat = -1;
system($cmd,&$stat);
这段代码在windows里可以正确的导出数据库

没有用过linux,请教大家,在linux下应该怎么修改?
...全文
256 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
改一下昵称 2012-03-29
  • 打赏
  • 举报
回复
string system ( string $command [, int &$return_var ] )
第二个参数本身是引用传递,不需要你去添加&。
我测试了一下,如果加上&,会报这个错误:
Fatal error: Call-time pass-by-reference has been removed in /www/admin/test.php
并且程序将不会执行。
我的PHP版本是5.4.0。建议你修正试试 system($cmd, $stat);
foolbirdflyfirst 2012-03-29
  • 打赏
  • 举报
回复
最好切换apache/nginx用户执行下那个mysqldump命令,确定不是权限问题。
Jim@luckeeinc.com 2012-03-29
  • 打赏
  • 举报
回复
权限应该是够的
我看了一下
system($cmd,&$stat);
执行完后 一直是返回的空 $stat的值一直是2
xuzuning 2012-03-29
  • 打赏
  • 举报
回复
不知道权限是否够
Jim@luckeeinc.com 2012-03-29
  • 打赏
  • 举报
回复
感谢大家的热心帮助
现在我修改了一下 echo 出来是
/usr/local/bin/mysqldump -uusername -ppwd dbname > /usr/local/www/data/test/test.sql

然后我执行
$stat = -1;
system($cmd,&$stat);
好像还是有错。。 按照2楼的说法 -u -p后面加空格也是一样不能备份
改一下昵称 2012-03-29
  • 打赏
  • 举报
回复
没有那个.exe
xuzuning 2012-03-29
  • 打赏
  • 举报
回复
/usr/local/bin/mysqldump
没有 .exe
ihefe 2012-03-29
  • 打赏
  • 举报
回复
linux 用exec


exec("mysqldump -uroot -p database table > /www/..... /sql.sql ");
Jim@luckeeinc.com 2012-03-29
  • 打赏
  • 举报
回复
"/usr/local/bin/mysqldump.exe -u root -p albergo albergo > /usr/local/www/data/test/test.sql";
我修后echo出来是上面的内容
但是为什么还是执行失败....
$stat = -1;
system($cmd,&$stat);
黄袍披身 2012-03-29
  • 打赏
  • 举报
回复
这个是个很简单的脚本 你自己参考吧

#!/bin/sh
# File: /home/mysql/backup.sh
# Database info
DB_NAME="test"
DB_USER="username"
DB_PASS="password"

# Others vars
BIN_DIR="/usr/local/mysql/bin"
BCK_DIR="/home/mysql/backup"
DATE=`date %F`

# TODO
$BIN_DIR/mysqldump –opt -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BCK_DIR/db_$DATE.gz
改一下昵称 2012-03-29
  • 打赏
  • 举报
回复
--default-character-set=latin1 -u root -p test 参数名与参数需用空格格开
".$doc_root."\\test\\test.sql" 路径分隔符是/
Jim@luckeeinc.com 2012-03-29
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]
/usr/local/bin/mysqldump -uusername -ppwd dbname > /usr/local/www/data/test/test.sql
确定有/usr/local/bin/mysqldump 这个文件,具体可用
var_dump( system("ls /usr/local/bin") );看看有没有'mysqldump'
修改/usr/local/www/……
[/Quote]
谢谢您的指点, 我把权限都开放成所有用户可写就可以了, 没有玩过linux, 一直是在windows上写C++, 权限这个东西真不懂... 也谢谢楼上的各位大侠热心帮忙.
改一下昵称 2012-03-29
  • 打赏
  • 举报
回复
/usr/local/bin/mysqldump -uusername -ppwd dbname > /usr/local/www/data/test/test.sql
确定有/usr/local/bin/mysqldump 这个文件,具体可用
var_dump( system("ls /usr/local/bin") );看看有没有'mysqldump'
修改/usr/local/www/data/test/权限到所有用户可写
一直都是直接在本机终端下做这些,用php没做过所以只能给你这点建议
Jim@luckeeinc.com 2012-03-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
引用 4 楼 的回复:

linux 用exec


exec("mysqldump -uroot -p database table > /www/..... /sql.sql ");




执行我给你的代码没。还有文件是否有写权限


$cmd = "mysqldump -uroot -ptest ".$this->sql_handle->database." > ……
[/Quote]

exec也试过了, 也没有能导出.
文件应该是有写权限的,因为我用ftp连过去看了,新建文件,修改,删除都可以
Jim@luckeeinc.com 2012-03-29
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
我这这样写可以

PHP code
$ds = 100;
system("/usr/local/mysql/bin/mysqldump -u root work > /www/datas.sql", $ds);
var_dump($ds);

root用户无密码,work是数据库名
var_dump($ds)输出 int(0)
[/Quote]

我的输出是int(2); 不知道是哪儿有问题 我用的服务器是freebsd的
改一下昵称 2012-03-29
  • 打赏
  • 举报
回复
我这这样写可以
$ds = 100;
system("/usr/local/mysql/bin/mysqldump -u root work > /www/datas.sql", $ds);
var_dump($ds);

root用户无密码,work是数据库名
var_dump($ds)输出 int(0)
ihefe 2012-03-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

linux 用exec


exec("mysqldump -uroot -p database table > /www/..... /sql.sql ");
[/Quote]



执行我给你的代码没。还有文件是否有写权限


$cmd = "mysqldump -uroot -ptest ".$this->sql_handle->database." > ".$doc_root."\\test\\test.sql";
exec($cmd);
Jim@luckeeinc.com 2012-03-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 dream1206 的回复:]
string system ( string $command [, int &$return_var ] )
第二个参数本身是引用传递,不需要你去添加&。
我测试了一下,如果加上&,会报这个错误:
Fatal error: Call-time pass-by-reference has been removed in /www/admin/test.php
并且程……
[/Quote]
奇怪, 我这里老是跑不出, 请问你那里能正常导出数据库吗?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧