从PHP运行Perl脚本在服务器上创建新目录


Run Perl script from PHP to create new directory on server

我正试图让PHP在我的apache web服务器上运行Perl脚本,但不确定从哪里开始。我在这里和其他网站上看了看,这就是我想到的。这是我的index.php文件:

<!DOCTYPE html>
<html>
<body>
<h1>My first PHP page</h1>
<?php
if (isset($_POST['button']))
{
  exec('/usr/bin/perl /home/gpham/scripts/test.pl');
}
?>
<html>
<body>
  <form method="post">
    <button name="button">Run Perl</button>
  </form>
</body>
</html> 

这是我的Perl文件test.pl

#!/usr/bin/perl
my $cmd = "mkdir /home/gpham/testfolder";
system($cmd);

因此,基本上,我想要的是,当用户单击"Run Perl"按钮时,它将在web服务器上创建新文件夹。但它不起作用。当我点击按钮时,什么也没发生。有人能指出我做错了什么吗?提前感谢各位。

您在这里走了一条令人印象深刻的迂回之路。您正在使用PHP调用Perl来运行shell命令;您也可以直接使用PHP shell_exec从PHP调用mkdir命令,或者完全跳过shell命令,直接调用Perl mkdir()或PHP mkdir()

但除此之外,这里最可能的问题是web服务器没有写入父目录(/home/gpham)的权限。由于这是您的主目录,因此这种状态是适当的。从PHP外部创建目录并适当设置其权限,或者为其选择另一个位置。