PHP从命令行输出,但不从浏览器输出

时间:2013-05-04 08:18:42

标签: php mysql command-line

我有一个PHP文件testphp.php,内容如下:

<?php
echo system('mysql -u root -pMyPassword -e "SELECT VERSION();"');
?>

它从命令行完美输出:

D:\>php testphp.php
VERSION()
5.5.24-log
5.5.24-log
D:\>

当我通过网络浏览器(http://localhost/testphp.php)执行相同的文件时,我看不到输出。为什么呢?

1 个答案:

答案 0 :(得分:2)

这有很多原因:

  1. 您正在使用命令mysql,该命令可能不在Web服务器运行的用户的路径中。从命令行运行它时,您使用自己的用户帐户运行它。 Web服务器在不同(受限制)的帐户下运行。您应该提供mysql二进制文件的完整路径。在提示符下键入which mysql作为普通用户,以找出可执行文件的完整路径。

  2. 您的系统配置可能会限制命令mysql,因此并非所有用户都可以执行该命令。

  3. 您在网络服务器上的PHP配置禁止使用system()

  4. 您可以通过运行此方法获取相同的信息(假设您已为php安装配置了mysql):

    $con = new mysqli("localhost", "root", "MyPassword");
    printf("%s", $con->server_info);