2013-11-15 147 views
0

我已经在我的OSX上安装了MAMP,并试图从我的php文件运行一个shell命令,但似乎我无法访问终端或命令未被发送到终端。从MAMP运行shell命令PHP

$cmd = "some shell command" 
$output = shell_exec($cmd); 
if($output == null) 
    echo "returned null"; 
else echo $output; 

我总是得到“返回null”,并且那里没有执行shell命令。该命令是正确的,如果我复制了“某些shell命令”并将其粘贴到终端中,该命令将被执行。我在Windows中测试过相同的文件,命令行是从php执行的,这个问题只出现在mac中。那么如何在mac中访问终端?

PS:

  • OSX 10.6.8
  • MAMP 2.0.5
  • PHP 5.3.6
+0

你期望你的命令返回? shell_exec()在错误输出或无输出时都返回null。 –

+0

我把输出测试结果,我只想执行命令 – fareed

回答

2

有很多的Windows/MAC/Linux操作系统之间的差异的工作。在Windows中,shell_exe命令提供了访问权限。即使用户在Windows中的资源有限,shell_exe命令也可以执行。

对于Mac/Linux操作系统,运行shell_exe命令有很多限制。强烈建议不要使用PHP的shell_exe命令。主机容易成为目标。您必须编辑PHP.INI以提供对用户的shell_exe访问权限。

如果您不是Mac/Linux主机的管理员,请询问机器管理员。如果,管理提供访问然后确定更少,你必须尝试另一种方式,这取决于你的项目需求。

编辑PHP.INI

哪个编辑正确的php.ini文件取决于由计算机使用的操作系统。位置通常根据所需的事情而改变。

如果您使用的是WHM CPanel,那么它变得不那么容易。 php.ini文件的位置一般

/usr/local/lib 

,如果你使用的是其他任何第三方程序的位置一般会改为

/usr/local/cpanel/3rdparty/etc/php.ini 
+0

那么在mac中运行shell命令的安全做法是什么?它是我的网页中使用shell命令的必要部分。 – fareed

+0

我无法在php.ini中找到shell_exec,也有我的禁用函数,在php.ini中没有参数 – fareed

+0

@fareed回答了您的问题 – Vineet1982