通过PHP运行shell脚本
有没有办法通过PHP运行以下脚本 我曾尝试使用exec、shell_exec和system,但都不起作用。当我尝试exec('whois domain.com')时,它们确实起作用,但这一定是我做错了 如果这是不可能的,是否有人知道通过PHP备份Magento的好方法,不幸的是,我没有SSH访问权限 谢谢 更新 这就是我试图使用的代码通过PHP运行shell脚本,php,bash,magento,exec,Php,Bash,Magento,Exec,有没有办法通过PHP运行以下脚本 我曾尝试使用exec、shell_exec和system,但都不起作用。当我尝试exec('whois domain.com')时,它们确实起作用,但这一定是我做错了 如果这是不可能的,是否有人知道通过PHP备份Magento的好方法,不幸的是,我没有SSH访问权限 谢谢 更新 这就是我试图使用的代码 system('magento-backup-script.bin -date', $output); var_dump($output); 输出:int(
system('magento-backup-script.bin -date', $output);
var_dump($output);
输出:int(127)
Php安全模式已关闭
更新:
我通过将脚本复制到PHP文件中并使用战术操作符来运行命令,从而成功地完成了任务。谢谢大家的帮助大家使用PHP的system()命令
system()与的C版本类似
执行
给定命令并输出结果
system()调用还尝试
自动刷新web服务器的
输出缓冲区位于每行
如果PHP作为服务器运行,则输出
模块
如果您需要执行一个命令
从命令中获取所有数据
直接返回,没有任何更改
干扰,使用passthru()命令
功能
()。听起来您的网络主机启用了安全模式,这会阻止您调用
系统()。将包含以下代码的php文件上载到您的Web服务器,然后在此处链接到该文件(或者如果服务器无法公开访问,请将其放在DropBox或其他位置)。这将告诉我们您的主机上禁用了哪些功能/如果启用了safemode
<?php
phpinfo();
?>
您可以使用在系统上执行命令,例如:
如果您的字符串名为backup,并且位于/home/rob/scripts/backup/megento中,您可以这样发出命令:
如果您得到的结果是127,这称为退出代码,int 127通常表示bas脚本试图执行命令,但未找到该命令
查看bash脚本,它使用tar命令创建归档文件,您是否确保tar存在并安装在服务器上
您可能还希望通过管道将输出传输到错误日志,以查看发生的情况:
system("/home/rob/scripts/backup/megento/backup >> results.txt");
echo file_get_contents("/home/rob/scripts/backup/megento/results.txt");
或者,如果这导致文件为空,可能是烫发问题,请尝试以下操作:
exec("/home/rob/scripts/backup/megento/backup",$full_result);
var_dump($full_results);// Array I believe.
如果运行apache版本/php的用户无权运行该脚本,则该脚本将不会运行。检查文件所有权/权限。还记得在运行exec()时,您是在应用程序user.system('magento-backup-script.bin-date',$output)的权限下运行的吗;变量转储(输出);您是否chmod
将文件转换为755,如果不尝试,请先这样做。这是通过Apache/mod php运行的吗?如果您没有SSH访问权限,您将使用什么上传到此主机?添加了exec尝试,这将捕获来自终端的所有数据,以便您可以查看发生了什么。
exec("/home/rob/scripts/backup/megento/backup",$full_result);
var_dump($full_results);// Array I believe.