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

时间:2013-07-15 23:18:44

标签: php perl apache

我正在尝试让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);

基本上,我想要的是当用户点击“运行Perl”按钮时,它将在Web服务器上创建该新文件夹。但它没有用。当我点击按钮时,没有任何反应。任何人都可以找出我做错了什么吗?先谢谢你们。

1 个答案:

答案 0 :(得分:2)

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

但除此之外,这里最可能的问题是Web服务器没有写入父目录(/home/gpham)的权限。由于这是您的主目录,因此这种情况是正确的。从PHP外部创建目录并适当地设置其权限,或为其选择其他位置。