【问题标题】:PHP script to import file in MySQL在 MySQL 中导入文件的 PHP 脚本
【发布时间】:2012-08-22 11:51:24
【问题描述】:

我的 postwwwacct 脚本中有一些代码不起作用,它不会导入 sql 文件

shell_exec("cd /home/".$opts['user']."/public_html/sbans/sql/");
$command="mysql -u ".$opts['user']." -p".$opts['pass']." ".$opts['user']."_bans < data.sql";
shell_exec($command);

但是在创建帐户后,我可以在 ssh 中手动运行

cd /home/jason/public_html/sbans/sql/
mysql -u jason -pmypass jason_bans < data.sql

然后工作。

postwwwacct中的php代码有什么问题?

很抱歉重新编辑您的编辑,但文件没有 php 扩展名 我使用

手动调用 php 编译器
#!/usr/local/bin/php -q

【问题讨论】:

  • 你得到什么错误?你有权限运行 shell 命令吗?
  • echo $command; 看看它是否是有效的命令
  • 我看不到输出,因为它在创建帐户时通过 cpanel 运行
  • 其他shell命令正常工作,比如复制文件,所以不应该是权限问题
  • 书呆子抱歉,但在手动运行 shell 命令时它不应该有空格我需要输入 -pmypass no space 才能工作

标签: php mysql cpanel


【解决方案1】:

在我的脑海中,你确定文件 data.sql 在所有不同用户的 sql 文件夹中吗?您还可以创建一个单独的 bash 脚本并在您的脚本中调用它,这对我之前有用,您只需使用以下内容传入参数:

$t = shell_exec("path/command.sh '$opts['user']' '$opts['pass']' 2>&1");
echo $t

并在 bash 脚本中像这样开始获取变量: #!/bin/bash

 #Get variables needed

 user=$1
 pass=$2

然后您可以继续将变量用作任何普通的 bash 变量,如果由于 shell_exec 命令末尾的 2>&1 而它仍然不适合您,您将能够更轻松地调试它。

祝你好运!

【讨论】:

  • 我正在使用以前的 shell 命令将 sql 文件复制到每个用户目录,所以它肯定在那里。我想坚持使用 php,因为其余的代码都是。
  • 我仍然强烈建议您在 shell_exec 命令之后添加 2>&1,它会打印出错误,如果您回显 $command,您将获得有关它失败原因的更多信息
【解决方案2】:

问题在于 shell_exec 执行 cd 并完成,因此找不到使用 sql 进行导入的命令并且失败。

试试这样的:

<?php
$command="mysql -u ".$opts['user']." -p".$opts['pass']." ".$opts['user']."_bans < data.sql";
$output = shell_exec("cd /home/".$opts['user']."/public_html/sbans/sql/ && ".$command);

如果您想查看命令的结果,只需执行此操作

回声$输出

【讨论】:

    猜你喜欢
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    相关资源
    最近更新 更多