我有一个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
)执行相同的文件时,我看不到输出。为什么呢?
答案 0 :(得分:2)
这有很多原因:
您正在使用命令mysql
,该命令可能不在Web服务器运行的用户的路径中。从命令行运行它时,您使用自己的用户帐户运行它。 Web服务器在不同(受限制)的帐户下运行。您应该提供mysql
二进制文件的完整路径。在提示符下键入which mysql
作为普通用户,以找出可执行文件的完整路径。
您的系统配置可能会限制命令mysql
,因此并非所有用户都可以执行该命令。
您在网络服务器上的PHP配置禁止使用system()
。
您可以通过运行此方法获取相同的信息(假设您已为php安装配置了mysql):
$con = new mysqli("localhost", "root", "MyPassword");
printf("%s", $con->server_info);