0

我有一个testphp.php包含以下内容的 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) 执行相同的文件时,我看不到任何输出。为什么?

4

1 回答 1

2

这有很多原因:

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

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

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

  4. 您可以通过运行它来获得相同的信息(假设您已经为您的 php 安装配置了 mysql):

    $con = new mysqli("localhost", "root", "MyPassword");
    printf("%s", $con->server_info);
    
于 2013-05-04T09:05:29.727 回答