2013-07-15 25 views
2

我試圖讓PHP在我的apache web服務器上運行Perl腳本,但並不確切知道從哪裏開始。我環顧這裏和其他網站,這就是我想出的。這是我的index.php文件:從PHP運行Perl腳本在服務器上創建新目錄

<!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

你爲什麼不只是用php創建dir?使用一種語言來調用另一種語言的腳本來做第一語言能做的事似乎毫無意義。 – 2013-07-15 23:20:08

+0

尤其是當第二種語言僅用作系統命令的非常薄的包裝時。 – innaM

回答

2

你在這裏採取了令人印象深刻的迂迴路徑。您正在使用PHP調用Perl來運行shell命令;您可以直接使用PHP shell_exec直接從PHP調用mkdir命令,或者完全跳過shell命令並直接調用Perl mkdir()PHP mkdir()

但是,除此之外,最可能發生的問題是Web服務器無權寫入父目錄(/home/gpham)。由於這是您的主目錄,因此這種情況是正確的。從PHP外部創建目錄並適當設置其權限,或爲其選擇另一個位置。

+0

非常感謝。我現在只想給你一個擁抱。它正在工作。這是我第一次使用PHP和Perl,所以我寫了所有這些長代碼。如果你還沒有指出,我會繞圈很長一段時間。 – GiangP

+0

我仍然有另一個問題。我知道我在圈子裏,但我只是想測試從PHP調用Perl腳本。如果我使用mkdir,它工作得很好,但是如果我將mkdir命令放入perl腳本並使用shell_exec調用腳本,它將無法工作。我將文件權限設置爲777,並關閉安全模式。 – GiangP

+0

你打的Perl腳本中的確切代碼是什麼? – duskwuff

相關問題