【问题标题】:Run Perl script from PHP to create new directory on server从 PHP 运行 Perl 脚本以在服务器上创建新目录
【发布时间】:2013-07-13 23:35:39
【问题描述】:

我试图让 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 服务器上创建新文件夹。但它不起作用。当我单击按钮时,什么也没有发生。谁能指出我做错了什么?在此先感谢各位。

【问题讨论】:

  • 为什么不直接用 php 创建目录?用一种语言调用另一种语言的脚本来做第一种语言能做的事情似乎毫无意义。
  • 特别是当第二语言仅用作系统命令的非常薄的包装时。

标签: php perl apache


【解决方案1】:

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

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

【讨论】:

  • 非常感谢。我现在只想给你一个拥抱。它正在工作。这是我第一次使用 PHP 和 Perl,所以我写了这么长的代码。如果你还没有指出,我会绕着圈子绕更长的时间。
  • 我还有另一个问题。我知道我要绕圈子,但我只想测试从 php 调用 perl 脚本。如果我使用 mkdir 它可以正常工作,但是如果我将 mkdir 命令放在 perl 脚本中并使用 shell_exec 调用脚本,它将无法正常工作。我将文件权限设置为 777 并关闭了安全模式。
猜你喜欢
  • 1970-01-01
  • 2018-09-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多