Home > php教程 > php手册 > PHP exec mysql return empty

PHP exec mysql return empty

WBOY
Release: 2016-06-06 20:08:26
Original
1185 people have browsed it

话说,这个问题还是用英文标题比较准确。中文大概意思:PHP EXEC 连接MYSQL 没返回值。 早上客服跟我说,网站的后台无法进行数据库更新了。估计是网站迁移服务器后,某些配置信息更改导致无法运行数据库更新。 检查了一下数据库更新源码。找到关键代码。如下

话说,这个问题还是用英文标题比较准确。中文大概意思:PHP EXEC 连接MYSQL 没返回值。

早上客服跟我说,网站的后台无法进行数据库更新了。估计是网站迁移服务器后,某些配置信息更改导致无法运行数据库更新。

检查了一下数据库更新源码。找到关键代码。如下(类似):

exec('/urs/local/mysql5/bin -u xxx -pxxxx xxxx 
<p>这部分代码是使用PHP exec执行系统的MYSQL命令导入数据库。刚开始以为服务器是数据库密码问题,更改后问题依旧。为了测试是不是这段关键代码无法执行。我写了一个测试代码</p>
<pre class="brush:php;toolbar:false">exec ('/urs/local/mysql5/bin -u xxx -pxxxx xxxx',$a, $code);
echo '<pre class="brush:php;toolbar:false">';
echo var_dump($a);
echo '<br>';
echo var_dump($code);
Copy after login

测试代码运行后,结果竟然是一个空数组?奇怪。正常来说执行无论成不成功,都有结果返回的。于是,在写了一个ls文件代码:

exec ('ls -a',$a, $code);
echo '<pre class="brush:php;toolbar:false">';
echo var_dump($a);
echo '<br>';
echo var_dump($code);
Copy after login

这次却有东西返回了。如图:

return_result

这下子就奇怪了,到底是什么原因出错呢?谷歌一下关键词PHP exec mysql return empty (英语真的很重要的)。有一个国外的提问网站(详细点击这里查看)也有一个类似的问题。对方说,为什么在 一下代码添加上 2>&1 就会有结果返回呢?

exec ('/urs/local/mysql5/bin -u xxx -pxxxx xxxx 2>&1 ',$a, $code);
echo '<pre class="brush:php;toolbar:false">';
echo var_dump($a);
echo '<br>';
echo var_dump($code);
Copy after login

测试了一下,的确如此。继续深入发掘。在CNDS找到一个帖子有讨论过这个问题,不过地址忘记了。如果感兴趣可以去了解一下linux的I/O重定向

如果你也遇到这样的问题,记得在exec 添加上 2>&1 则可以有结果返回了! :)

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template