我有一个学生网站,运行在 Ubuntu 14.04 上。当我的学生在我的网站上注册时,我会将用户信息存储在 MySQL 数据库中。
我想在我的 Ubuntu 安装上为我的学生提供一个网站,当他们在我的网站上注册时,我希望这个过程是自动化的。我的问题是 - 我能否以某种方式使用来自 MySQL DB 的直接数据在我的 Ubuntu 上为他们提供一个子域名 (username.mydoamin.com),或者我能否从 PHP 在 Ubuntu 上执行 shell 命令,并自动执行我现在手动执行的操作?
答案1
我可以通过 PHP 在 Ubuntu 上执行 shell 命令并自动执行我现在手动执行的操作吗?
您可以PHP
使用shell_exec()
函数或使用` `
(反引号)运算符:如果你运行的是PHP
<5.4.0,请首先确保禁用安全模式,那么PHP
您可以在脚本中使用以下任一语法:
$return = shell_exec('<shell_command>');
$return = `<shell_command>`;
除非您想捕获单个命令的返回值,否则最直接的方法是将您在 shell 中手动执行的所有操作压缩为一个独立bash
(或其他)脚本,然后使用上述任一方法调用一次。例如,脚本的语法bash
如下:
$return = shell_exec('bash script.sh');
$return = `bash script.sh`;
要将参数传递给脚本(例如$username
变量的值):
$return = shell_exec("bash script.sh '$username'");
$return = `bash script.sh '$username'`;
要检索脚本中传递的参数(例如,使用上述方法传递的变量bash
的值):$username
#!/bin/bash
# ...
username=$1
# ...
或者只是在需要的地方简单引用$1
,例如:
#!/bin/bash
# ...
echo "$1"
# ...
答案2
作为我自己问题的后续,我将详细阐述我的经验。我让 Shell 执行从 PHP 工作,但解决方案存在重大安全问题。这是我犯的一个重大错误,我一开始没有意识到这一点。
为了消除安全风险,我编写了一个 bash 脚本,用于在用户表中查找已激活的用户。如果用户处于活动状态且不是 Linux 用户,则应在我的 Linux 上创建该用户,创建数据库用户,创建子域并为该用户锁定 ssh。我设置了一个每 60 分钟运行一次的 cron 作业,在创建用户时,会向用户发送一封包含注册信息的电子邮件。
这消除了很多安全风险(并非全部)。
比亚克