【问题标题】:PHP-FPM Exporter Binary can not access php unix socketPHP-FPM Exporter Binary 无法访问 php unix socket
【发布时间】:2022-11-18 12:33:45
【问题描述】:

我正在使用 https://github.com/hipages/php-fpm_exporter 的二进制文件来尝试将 php 指标导出到 Prometheus。您可以设置的参数之一是所讨论的 unix 套接字。以下是我的 PHP unix 套接字的权限:

srw-rw---- 1 www-data www-data 0 Sep 8 15:17 /var/run/php/php7.2-fpm.sock

这就是我尝试运行二进制文件时发生的情况:

admin@1234567:~$ sudo -u www-data bash -c "./php-fpm_exporter_2.2.0_linux_amd64 get --phpfpm.scrape-uri unix:///var/run/php/php7.2-fpm.sock" 
ERRO[0000] Pool[unix:///var/run/php/php7.2-fpm.sock]: Access denied. 
ERRO[0000] invalid character 'A' looking for beginning of value 
ERRO[0000] invalid character 'A' looking for beginning of value 
Address:                unix:///var/run/php/php7.2-fpm.sock
Pool:                                                      
Start time:             Mon, 01 Jan 0001 00:00:00 +0000    
Start since:            0                                  
Accepted connections:   0                                  
Listen Queue:           0                                  
Max Listen Queue:       0                                  
Listen Queue Length:    0                                  
Idle Processes:         0                                  
Active Processes:       0                                  
Total Processes:        0                                  
Max active processes:   0                                  
Max children reached:   0                                  
Slow requests:          0     

有人可以解释为什么它不能访问 unix 套接字,以及关于无效字符“A”的其他错误是什么?

仅供参考 - 这是我的 nginx 文件中的位置块:

        include snippets/fastcgi-php.conf;
        
        fastcgi_pass    unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_param   SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_read_timeout 300;
    }

该网站运行良好,因此插座显然可以正常工作。您会注意到此文件中的套接字被列为 unix:/var/run/php/php7.2-fpm.sock;。我已经在我的命令中尝试过,但没有用。我试了unix:///var/run/php/php7.2-fpm.sock;/statusunix:/var/run/php/php7.2-fpm.sock;/status,都是一样的结果。

【问题讨论】:

    标签: php linux unix-socket


    【解决方案1】:

    我发现“拒绝访问”消息有点误导。我在我的 PHP FPM pool.d/www.conf 文件中发现我有以下设置:

    pm.status_path = /php_fpm_status

    因此,路径不是 /status 而是 /php_fpm_status。当我用这个更新我的命令时,它起作用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 2012-11-21
      相关资源
      最近更新 更多