xdebug 只有配置文件 php 进程没有 php-fpm 进程
xdebug only profile php process not php-fpm process
php info.php
可以触发分析并将分析文件写入 /tmp/cachegrind.out.* like
-rw-r--r-- 1 roofe www 344 Jul 11 12:04 /tmp/cachegrind.out.6723
-rw-r--r-- 1 root root 7172 Jul 11 12:06 /tmp/cachegrind.out.6808
-rw-r--r-- 1 root root 7178 Jul 11 12:06 /tmp/cachegrind.out.6819
http://example.com/info.php
无法触发分析
这是php信息
which php
/usr/bin/php
ll /usr/bin/php
lrwxrwxrwx 1 root root 27 May 21 15:14 /usr/bin/php -> /etc/opt/remi/php73/bin/php
我还发现所有 php 进程都可以触发 prifiling,而 php-fpm 则不能。
ps-aef | grep php
root 927 919 1 10:51 ? 00:00:50 /etc/opt/remi/php73/bin/php artisan horizon:supervisor ......
root 948 928 0 10:51 ? 00:00:17 /etc/opt/remi/php73/bin/php artisan horizon:work ........
root 28161 1 0 09:45 ? 00:00:00 php-fpm: master process (/etc/opt/remi/php73/etc/php-fpm.conf)
www 28162 28161 1 09:45 ? 00:01:32 php-fpm: pool www
php.ini
;[xdebug]
zend_extension=/etc/opt/remi/php73/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
xdebug.remote_autostart = On
xdebug.remote_enable = On
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.collect_vars = On
xdebug.collect_return = On
xdebug.collect_params = On
xdebug.profiler_enable= On
xdebug.idekey = PHPSTORM
和 nginx 配置文件
location / {
index /../home/index.html;
add_header X-Location /;
try_files $uri /index.php$is_args$args;
fastcgi_pass unix:/dev/shm/php73-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
我认为您受到服务单元文件中PrivateTmp=true
的影响:
/usr/lib/systemd/system/php72-php-fpm.service
默认情况下,XDebug 将分析器文件存储在 xdebug.profiler_output_dir=/tmp
中
您可以禁用 PrivateTmp
或使用 /tmp
或 /var/tmp
之外的目录
php info.php
可以触发分析并将分析文件写入 /tmp/cachegrind.out.* like
-rw-r--r-- 1 roofe www 344 Jul 11 12:04 /tmp/cachegrind.out.6723
-rw-r--r-- 1 root root 7172 Jul 11 12:06 /tmp/cachegrind.out.6808
-rw-r--r-- 1 root root 7178 Jul 11 12:06 /tmp/cachegrind.out.6819
http://example.com/info.php
无法触发分析
这是php信息
which php
/usr/bin/php
ll /usr/bin/php
lrwxrwxrwx 1 root root 27 May 21 15:14 /usr/bin/php -> /etc/opt/remi/php73/bin/php
我还发现所有 php 进程都可以触发 prifiling,而 php-fpm 则不能。 ps-aef | grep php
root 927 919 1 10:51 ? 00:00:50 /etc/opt/remi/php73/bin/php artisan horizon:supervisor ......
root 948 928 0 10:51 ? 00:00:17 /etc/opt/remi/php73/bin/php artisan horizon:work ........
root 28161 1 0 09:45 ? 00:00:00 php-fpm: master process (/etc/opt/remi/php73/etc/php-fpm.conf)
www 28162 28161 1 09:45 ? 00:01:32 php-fpm: pool www
php.ini
;[xdebug]
zend_extension=/etc/opt/remi/php73/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
xdebug.remote_autostart = On
xdebug.remote_enable = On
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.collect_vars = On
xdebug.collect_return = On
xdebug.collect_params = On
xdebug.profiler_enable= On
xdebug.idekey = PHPSTORM
和 nginx 配置文件
location / {
index /../home/index.html;
add_header X-Location /;
try_files $uri /index.php$is_args$args;
fastcgi_pass unix:/dev/shm/php73-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
我认为您受到服务单元文件中PrivateTmp=true
的影响:
/usr/lib/systemd/system/php72-php-fpm.service
默认情况下,XDebug 将分析器文件存储在 xdebug.profiler_output_dir=/tmp
您可以禁用 PrivateTmp
或使用 /tmp
或 /var/tmp