显示Apache当前正在运行的PHP脚本

bri*_*ian 3 php linux apache

当我ps -ef从Linux命令行运行时,我没有看到Apache Web用户当前正在运行的PHP脚本,我只是将进程视为:

/usr/bin/php5-cgi -q -b 127.0.0.1:9000 -c /etc/php5/cgi/php.ini
Run Code Online (Sandbox Code Playgroud)

是否有一个命令行将显示正在运行的脚本,而不仅仅是Apache用户使用php的事实?

meu*_*euh 8

您可以使用lsof获取当前工作目录和打开的文件.遗憾的是,这不包括正在运行的脚本,但如果脚本位于不同的目录中,或者打开不同的文件,则可以区分它们.例如,以下显示/ var/www/stuff/php中的脚本正在运行:

sudo lsof -c http | grep cwd
httpd   24475  id  cwd DIR 8,3     4096 1123403 /var/www/stuff/php
Run Code Online (Sandbox Code Playgroud)

您可以配置apache以获取信息.添加一个条目

<Location /server-status>
    SetHandler server-status
    ...
</Location>
Run Code Online (Sandbox Code Playgroud)

在您的conf中确保它仅适用于受限制的遥控器.然后浏览到http://localhost/server-status,你将有一个"ps"的正在运行的工作.例如,此输出显示gg.php正在运行(我删除了一些列):

Srv PID     Acc     M CPU     SS Slot Client  VHost  Request
0-0 23688   0/0/262 W 0.50    2  4.48 ::1     xxx:80 GET /php/gg.php HTTP/1.1
1-0 23743   0/0/187 W 0.00    0  3.30 ::1     xxx:80 GET /server-status HTTP/1.1
Run Code Online (Sandbox Code Playgroud)