我有两个
*.sql
文件,用于创建新的网站数据库。第一个文件创建所有表格,第二个文件填充一些默认记录。我希望能够从PHP中执行这些文件。如果使用Zend_Framework可以实现,我也会使用它。
附加信息
- 我没有控制台访问权限
- 我正在尝试在我们的应用程序内部自动化站点生成。
使用shell_exec()
...
$command = 'mysql'
. ' --host=' . $vals['db_host']
. ' --user=' . $vals['db_user']
. ' --password=' . $vals['db_pass']
. ' --database=' . $vals['db_name']
. ' --execute="SOURCE ' . $script_path
;
$output1 = shell_exec($command . '/site_db.sql"');
$output2 = shell_exec($command . '/site_structure.sql"');
...我从来没有得到有用的输出,但是按照另一个线程上的一些建议,最终使它全部工作起来了。我切换到命令的--option=value
格式,并使用--execute="SOURCE ..."
代替<
来执行文件。
此外,我从未得到过关于shell_exec()
和exec()
之间区别的好解释。
shell_exec()
和exec()
的区别在于,shell_exec()
将所有输出流作为字符串返回,而exec()
仅返回输出流的最后一行。来源:https://dev59.com/RWw05IYBdhLWcg3wrDtS#7093892 - michaellindahl