Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl脚本:命令行和CGI的不同结果_Perl_Apache_Cgi - Fatal编程技术网

Perl脚本:命令行和CGI的不同结果

Perl脚本:命令行和CGI的不同结果,perl,apache,cgi,Perl,Apache,Cgi,警告:我是perl和CGI初学者,所以这可能是一个愚蠢的问题 我编写了一个非常简单的perl脚本,它应该可以获得有关系统上打开的文件和运行进程的信息。对于流程,有类似于此的函数: sub num_processes() { my @lines = `/bin/ps -ef`; return scalar @lines; } 若我从bash运行它,它将返回系统上所有正在运行的进程,但当我通过apache和CGI运行它时,它只运行2个进程(运行脚本并运行“ps-ef”)。此CGI脚

警告:我是perl和CGI初学者,所以这可能是一个愚蠢的问题

我编写了一个非常简单的perl脚本,它应该可以获得有关系统上打开的文件和运行进程的信息。对于流程,有类似于此的函数:

sub num_processes() {
    my @lines = `/bin/ps -ef`;
    return scalar @lines;
}

若我从bash运行它,它将返回系统上所有正在运行的进程,但当我通过apache和CGI运行它时,它只运行2个进程(运行脚本并运行“ps-ef”)。此CGI脚本在启用shell(/bin/bash)的用户下运行。是否有可能通过apache和CGI获取所有进程?

您的CGI脚本将作为apache用户帐户运行。您的shell调用将作为您的用户帐户运行。这可能就是为什么你会得到两个不同的答案。看看类似于管理运行CGI脚本的用户的东西。

您的CGI脚本将作为Apache用户帐户运行。您的shell调用将作为您的用户帐户运行。这可能就是为什么你会得到两个不同的答案。看看类似于管理运行CGI脚本的用户的东西。

感谢您的反应,但我忘了添加信息,运行scipt的用户不同于apache one(感谢suexec),并且启用了shell。两个不同的用户将看到不同的进程列表,因此,您可能遇到了预期的行为。感谢您的反应,但我忘了添加信息,运行scipt的用户不同于apache one(感谢suexec),并且启用了shell。两个不同的用户将看到不同的进程列表,那么您可能遇到了预期的行为。那么
num\u进程
返回
@行的大小
数组?那么
num\u进程
返回
@行的大小
数组?