centos 如何从PHP shell_exec program_linux_i386 [已关闭]

xxls0lw8  于 10个月前  发布在  PHP
关注(0)|答案(2)|浏览(104)

已关闭。此问题需要details or clarity。它目前不接受回答。
**希望改进此问题?**通过editing this post添加详细信息并阐明问题。

12天前关门了。
Improve this question
我下载了(mdldec_linux_amd64)和(mdldec_linux_i386)
并将它们放置在cPanel / Files Manager / HTML文件夹中的某个位置
如何从Call.PHP调用这个程序?
我尝试下面这样的东西

shell_exec ("mdldec_linux_amd64 parameter1 parameter2");

字符串
有人能帮我一下吗?

jk9hmnmh

jk9hmnmh1#

不建议从php执行命令,这可能会带来安全问题。如果你没有选择,这里有两个例子:
您应该尝试使用要执行的文件的完整路径:

shell_execute("/usr/local/mdldec_linux_amd64 parameter1 parameter2");

字符串
假设文件是/usr/local文件夹
您也可以使用exec并从执行的命令中获取最后返回的行。以及全部输出

$output = array();
$lastLine = exec("/usr/local/command",$output);


并且您可能能够更好地调试并获得更多信息

blpfk2vs

blpfk2vs2#

使用shell_exec或类似的函数从PHP执行二进制文件是很清楚的,您的示例几乎就做到了。有一些注意事项和必要条件需要考虑:
1.文件权限:证明PHP进程拥有对二进制文件的执行权限。您可能需要chmod +x mdldec_linux_amd64chmod +x mdldec_linux_i386来授予执行权限。
1.绝对路径:在shell_exec调用中使用二进制文件的绝对路径。如果您没有明确地通知PHP,它可能不知道在哪里找到您的二进制文件。例如,不是"mdldec_linux_amd64 parameter1 parameter2",而是"/full/path/to/mdldec_linux_amd64 parameter1 parameter2"
1.安全模式:检查PHP是否在安全模式下运行(这是php.ini中的配置)。如果是,那么二进制文件必须驻留在通过safe_mode_exec_dir设置指定的目录中。
1.禁用功能:此外,确定shell_exec功能未被禁用。某些共享主机会停用具有潜在危险的功能。您可以在php.ini文件中的“disable_functions”指令中验证这一点。
假设您的PHP设置允许您使用shell_exec,您的PHP代码将如下所示:

<?php
$output = shell_exec('/full/path/to/mdldec_linux_amd64 parameter1 parameter2');
echo "<pre>$output</pre>";
?>

字符串
/full/path/to/替换为您上传文件的实际路径,将parameter1 parameter2替换为您希望传递给程序的实际参数。
使用像shell_exec这样的函数是危险的,因为它们允许PHP在服务器上执行任意命令。因此,仅在绝对必要时使用它们,并确保验证和清理所有输入,以防止潜在的安全隐患。

相关问题