AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[php-fastcgi](server)

Martin Hope
ArcanisGK507
Asked: 2021-10-02 21:13:42 +0800 CST

网页显示超时网关错误 FastCGI

  • 1

以我有限的知识,我继续解释这个问题和场景有点复杂。

最初我认为这是与我的脚本和查询的性能相关的一些问题,所以我在网站上用西班牙语创建了这篇文章:LINK

但是在研究了下午的大部分时间之后;我将把这一切都归因于我的开发环境的错误配置。

我正在使用 2 台设备服务器:

  1. 当地的:

    • 视窗 10
    • 拉拉贡服务器
  2. 发展:

    • Ubuntu 20.04
    • XAMPP

在这种情况下,我将专注于本地:
我已将 laragon 堆栈配置为支持虚拟主机并运行 2 个版本的 PHP(7.2 / 7.4)我遵循以下 2 个指南:链接 1和链接 2

我的阿帕奇配置:

Define SRVROOT "C:/laragon/bin/apache/httpd-2.4.47-win64-VS16"

ServerRoot "C:/laragon/bin/apache/httpd-2.4.47-win64-VS16"


Listen 80


LoadModule access_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule version_module modules/mod_version.so

<IfModule unixd_module>
    User daemon
    Group daemon
</IfModule>

ServerAdmin admin@example.com

ServerName Laragon

<Directory />
    AllowOverride none
    Require all denied
</Directory>


DocumentRoot "C:/laragon/www"
<Directory "C:/laragon/www">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride None
    Require all granted
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

<Files ".ht*">
    Require all denied
</Files>

ErrorLog "logs/error.log"

LogLevel error

<IfModule log_config_module>
    
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    CustomLog "logs/access.log" common

</IfModule>

<IfModule alias_module>
    
    ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"

</IfModule>

<IfModule cgid_module>
    #
    # ScriptSock: On threaded servers, designate the path to the UNIX
    # socket used to communicate with the CGI daemon of mod_cgid.
    #
    #Scriptsock cgisock
</IfModule>


<Directory "${SRVROOT}/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

<IfModule headers_module>
    RequestHeader unset Proxy early
</IfModule>

<IfModule mime_module>

    TypesConfig conf/mime.types


    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

</IfModule>



# Configure mod_proxy_html to understand HTML4/XHTML1
<IfModule proxy_html_module>
    Include conf/extra/proxy-html.conf
</IfModule>


<IfModule ssl_module>
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
</IfModule>

AcceptFilter http none
AcceptFilter https none
EnableSendfile Off
EnableMMAP Off

IncludeOptional "C:/laragon/etc/apache2/alias/*.conf"
IncludeOptional "C:/laragon/etc/apache2/sites-enabled/*.conf"
Include "C:/laragon/etc/apache2/httpd-ssl.conf"
Include "C:/laragon/etc/apache2/mod_php.conf"

ScriptAlias /php72 "C:/laragon/bin/php/php72"
Action application/x-httpd-php72-cgi /php72/php-cgi.exe
<Directory "C:/laragon/bin/php/php72">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
        Require all granted
    </Files>
</Directory>

虚拟主机:

<VirtualHost *:80> 
    DocumentRoot "D:/webdev/Local/test1/"
    ServerName test1.me
    ServerAlias *.test1.me
    <Directory "D:/webdev/test1/">
        AllowOverride All
        Require all granted
    </Directory>
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php72-cgi
    </FilesMatch>
</VirtualHost>

phpmyadmin 的别名

Alias /phpmyadmin "C:/laragon/etc/apps/phpMyAdmin/"
<Directory "C:/laragon/etc/apps/phpMyAdmin/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all  
    Require local
</Directory>

MySQL 配置

[client]
#password=your_password
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=512M
max_allowed_packet=4096M
table_open_cache=256
sort_buffer_size=32M
read_buffer_size=32M
read_rnd_buffer_size=32M
myisam_sort_buffer_size=128M
thread_cache_size=16

secure-file-priv=""
explicit_defaults_for_timestamp=1
datadir= "C:/laragon/data/mysql"
lower_case_table_names=2
sql_mode=""
wait_timeout=28800
interactive_timeout=28800


[mysqldump]
quick
max_allowed_packet=4096M

两个版本的 PHP 配置 (7.2/7.4)

file_uploads = On
upload_max_filesize = 4096M
max_file_uploads = 100
allow_url_fopen = On
memory_limit = 3G
post_max_size = 600M
max_execution_time = 5000
max_input_time = 5000
max_input_vars = 5000
date.timezone= America/Panama
error_reporting = E_ALL
display_errors = on
display_startup_errors = on
html_errors = On
session.gc_maxlifetime = 2592000
session.cache_expire = 2592000

如您所见,我默认使用 apache 处理程序 2.0 为 php 7.4 提供服务;我正在使用别名服务 php 7.2。

  • phpmyadmin => php 7.4 Apache 处理程序 2.0
  • test1.me => php 7.2 CGI/FastCGI

MySQL的错误日志:

2021-10-02T04:26:59.472441Z 35 [Note] Aborted connection 35 to db: avipac_dbproducts' user: 'root' host: 'localhost' (Got an error writing communication packets)

Apache的错误日志:

[Fri Oct 01 23:22:17.806390 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] Script timed out before returning headers: php-cgi.exe, referer: http://test1.me/
[Fri Oct 01 23:23:43.661155 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] AH01215: PHP Fatal error:  Allowed memory size of 3221225472 bytes exhausted (tried to allocate 20480 bytes) in D:\\webdev\\Local\\test1\\control\\classgeneric\\class.managerdb.php on line 111: C:/laragon/bin/php/php72/php-cgi.exe, referer: http://test1.me/
[Fri Oct 01 23:23:43.676759 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] AH01215: PHP Fatal error:  Allowed memory size of 3221225472 bytes exhausted (tried to allocate 65536 bytes) in Unknown on line 0: C:/laragon/bin/php/php72/php-cgi.exe, referer: http://test1.me/
[Fri Oct 01 23:23:43.676759 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] AH01215: PHP Fatal error:  Allowed memory size of 3221225472 bytes exhausted (tried to allocate 24576 bytes) in Unknown on line 0: C:/laragon/bin/php/php72/php-cgi.exe, referer: http://test1.me/
[Fri Oct 01 23:24:59.451291 2021] [cgi:error] [pid 3808:tid 1104] [client 127.0.0.1:53918] Script timed out before returning headers: php-cgi.exe, referer: http://test1.me/

我绝对接受 mysql 查询对于 Windows 上的本地环境来说是比较大的;但问题是 apache 处理程序 2.0 和 php 7.4 在不到 1 秒的时间内执行了相同的查询......但在 CGI / FastCGI 中,它在达到超时(180 秒 / 3 分钟)时停止......我有为 FastCGI 和 Apache Handler 2.0 设置相同的设置,但并不令人信服,因为一个失败而另一个没有。

当然,这就是为什么我的疑惑之一是他们在我的设置中告诉我我需要什么配置来改进 FastCGI。这是我主要忽略的。(在哪里,如何和什么)。

可能有人在我的设置中告诉我需要什么配置来改进 FastCGI。这是我主要忽略的。(在哪里,如何和什么)我真的不明白为什么我不能让 Fast CGI 至少不能像 Apache 那样破坏和工作......

我不知道出了什么问题,我需要什么或如何解决这些错误......我知道 CGI / FastCGI 需要很长时间并消耗大量内存,但我不知道为什么它不起作用和 Apache Handler正常工作

或者是否存在代理 Apache Handler 2.0 的任何方式,而不是通过 FastCGI 别名使用 php-cgi?


说明性图像 Apache Handler 2.0:

在此处输入图像描述

CGI/FastCGI:

在此处输入图像描述

在此处输入图像描述


更新#1

我找到了这个配置文件: 注意:我假设这个配置文件很重要;但我不知道它的功能或者我应该添加、删除或修改什么东西以使 FastCGI 表现得像 Apache Handler 2.0。

    LoadModule fcgid_module "C:/laragon/etc/apache2/modules/mod_fcgid-2.3.10-win64-VS16.so"

<IfModule fcgid_module>
    FcgidInitialEnv PATH "C:/laragon/bin/php/php74;C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;"
    FcgidInitialEnv SystemRoot "C:/Windows"
    FcgidInitialEnv SystemDrive "C:"
    FcgidInitialEnv TEMP "C:/Windows/Temp"
    FcgidInitialEnv TMP "C:/Windows/Temp"
    FcgidInitialEnv windir "C:/Windows"

    # 10 hrs: in case you have long running scripts, increase FcgidIOTimeout 
    
    FcgidIOTimeout 36000
    FcgidIdleTimeout 36000
    FcgidProcessLifeTime 36000
    FcgidBusyTimeout 36000
    FcgidConnectTimeout 3600
    FcgidMaxRequestsPerProcess 0
    FcgidMaxProcesses 50
    FcgidMaxRequestLen 81310720
    # Location php.ini:
    # FcgidInitialEnv PHPRC "C:/laragon/bin/php/php74"
    FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 0

    <Files ~ "\.php$>"
        AddHandler fcgid-script .php
        Options +ExecCGI
        FcgidWrapper "C:/laragon/bin/php/php74/php-cgi.exe" .php
    </Files>
</IfModule>
mysql fastcgi apache-2.4 php-fastcgi
  • 1 个回答
  • 359 Views
Martin Hope
0LEg
Asked: 2020-07-20 06:03:19 +0800 CST

Nginx(Ubuntu 18.04)FastCGI 在标准错误中发送:“主要脚本未知”,同时从上游读取响应标头

  • 0

嗯...我知道有很多类似的问题被问到。但是为了使这篇文章在解决后对社区有所帮助,我想列出一个适用于 Wordpress 的 Nginx + PHP-fpm conf 文件。但截至目前它不起作用,他他。

因为这是我第二次处理 Nginx(第一次设置接近默认设置)配置,所以恐怕我无法在没有帮助的情况下处理故障排除。我要做的是使用 FastCGI 缓存设置 Nginx,以便踢 Wordpress 的屁股,使其运行得更快。安装 nginx 后,就可以在寻址时显示默认的问候语 html 页面http://vps_ip_adress。我想这意味着网络和基本设置很好。然后我安装了 php7.4-fpm 并调整了一些 nginx 配置以启用 FastCGI 缓存以进行进一步的 Wordpress 安装。出于测试目的,我将包含info.php文件<?php phpinfo(); ?>放入父亲根目录 /var/www/html/mysitename/info.php。现在我得到FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream在 nginx 错误日志中。我已经读过这意味着 php-fpm 无法找到脚本,很可能是由于 nginx 配置中的脚本名称错误。不幸的是,我没有使用 nginx,我找不到错误。

作为参考,我使用了在互联网上找到的 nginx 配置(是的......我知道,在互联网上发现的东西有问题 - 它永远不会工作,他)。万一在有人的帮助下,我会在这里工作,将列出 Nginx+PHP-fpm 设置与 FAstCGI 缓存,我猜这是非常需要的。任何有关如何为 Wordpress 优化 nginx+php-fpm 配置的建议都将不胜感激。

~~~~~~~配置清单~~~~~~~

/etc/nginx/nginx.conf

user www-data;
worker_processes 2;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        multi_accept on;
}

http {

        #FastCGI cache settings
        fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=WORDPRESS:100m max_size=4g inactive=60m use_temp_path=off;
        fastcgi_cache_key "$scheme$request_method$host$request_uri";
        #
        fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 15;
        types_hash_max_size 2048;
        server_tokens off;
        client_max_body_size 64m;
        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;

        # gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 2;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

        ##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;

        server {
                listen 80 default_server;
                listen [::]:80 default_server;
                server_name _;
                return 444;
               }

}

/etc/nginx/fastcgi.conf

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

/etc/nginx/site-enabled/mysitename.conf

server {
        # As DNS records are not well set up, I'm suing IP adress. To be replaced with domain name 
        server_name xxx.xxx.xxx.xxx;

        access_log   /var/log/nginx/mysitename.access.log;
        error_log    /var/log/nginx/mysitename.error.log;

        root /var/www/mysitename;
        index index.php;
#
        set $skip_cache 0;
#

        # POST requests and urls with a query string should always go to PHP
        if ($request_method = POST) {
                set $skip_cache 1;
        }
        if ($query_string != "") {
                set $skip_cache 1;
        }

        # Don't cache uris containing the following segments
        if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
                set $skip_cache 1;
        }

        # Don't use the cache for logged in users or recent commenters
        if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
                set $skip_cache 1;
        }

        #Don't chache for store, cart,my account, checkout pages
        if ($request_uri ~* "/store.*|/cart.*|/my-account.*|/checkout.*|/addons.*") {
         set $skip_cache 1;
        }

        #Skip cache for WooCommerce query string
        if ( $arg_add-to-cart != "" ) {
          set $skip_cache 1;
        }


        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {

                          fastcgi_split_path_info ^(.+\.php)(/.+)$;
                          fastcgi_pass 127.0.0.1:9000;
                          fastcgi_index index.php;
                          include fastcgi_params;

                          set $rt_session "";

        if ($http_cookie ~* "wc_session_cookie_[^=]*=([^%]+)%7C") {
                    set $rt_session wc_session_cookie_$1;
            }

        if ($skip_cache = 0 ) {
            more_clear_headers "Set-Cookie*";
            set $rt_session "";
            }

            fastcgi_cache_key "$scheme$request_method$host$request_uri$rt_session";

            fastcgi_cache WORDPRESS;
            fastcgi_cache_valid 200 301 302 60m;
            fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503;
            fastcgi_cache_min_uses 1;
            fastcgi_cache_lock on;
            add_header X-FastCGI-Cache $upstream_cache_status;
            fastcgi_cache_bypass $http_cookie $cookie_nocache $skip_cache;
            fastcgi_no_cache $http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" $skip_cache;

            fastcgi_cache_background_update on;

        }

        location ~ /purge(/.*) {
            fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
        }

        location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
                access_log off; log_not_found off; expires max;
        }

        location = /robots.txt { access_log off; log_not_found off; }
        location ~ /\. { deny  all; access_log off; log_not_found off; }
}

/etc/php/7.4/fpm/pool.d/www.conf 该文件的一些亮点(它很长......)

user = www-data
group = www-data
listen = 127.0.0.1:9000
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

你能帮我解决问题吗?

ubuntu nginx wordpress php-fpm php-fastcgi
  • 1 个回答
  • 1370 Views
Martin Hope
Putnik
Asked: 2016-10-19 00:31:07 +0800 CST

php-fastcgi 状态:“未指定输入文件”

  • 1
# grep pm.status_path /etc/php5/fpm/pool.d/www.conf
pm.status_path = /fcgi-status

nginx配置:

location ~ ^/(fcgi-status|ping)$ {
     access_log off;
     allow 127.0.0.1;
     deny all;
     fastcgi_param SCRIPT_FILENAME /path/$fastcgi_script_name;
     fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
}

fastcgi_param 和 fastcgi_pass 与适用的网站相同。

php-fastcgi 和 nginx 已重新启动,但是:

# curl http://127.0.0.1/fcgi-status -i
HTTP/1.1 404 Not Found
Server: nginx/1.10.1
Date: Tue, 18 Oct 2016 08:10:03 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.5.9-1ubuntu4.20

No input file specified.

这不是这个问题的重复,因为错误不是“找不到文件”(也许 nginx 无法找到路径),而是“没有指定输入文件”。请注意,响应中有php标头,因此答案不是来自 nginx,而是来自 php-fpm。

这是服务器上唯一的池。

我究竟做错了什么?

monitoring nginx php-fpm stat php-fastcgi
  • 2 个回答
  • 1850 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve