タグ付けされた質問 「php-fpm」

PHP-FPM(FastCGIプロセスマネージャー)は、PHP FastCGIの代替実装であり、あらゆるサイズのサイト、特に使用頻度の高いサイトに役立ついくつかの追加機能を備えています。

1
仮想ホストごとのログファイルに書き込むようにNGINX経由でPHP-FPMを構成する方法
Fedora 16にはNginxとPHP-FPMがあります。すべてが非常にうまく機能しています。PHPの通知、警告、エラーなどのログはすべてにあり/var/log/php-fpm/www-error.logます。 Nginxのエラーログとして設定された適切なログファイルにエラーを書き込むようにPHP-FPMを設定する方法はありますか?そのため、1つのグローバルファイルではなく、仮想ホストごとに PHPエラーを記録します。(Apache HttpdやPHPなど)。
11 linux  nginx  logging  php-fpm 

2
php-fpmプールの構成値を別のファイルで上書きする
新しいサーバーのphp-fpmプール構成をカスタマイズする必要があるので、新しいプールファイルを作成することが可能/許可/推奨されているかどうかを疑問に思います。この名前は、元のファイルの後にアルファベット順になり、初期構成を上書きする値のみを含みます。 元の構成は/etc/php/7.0/fpm/pool.dnamedにありwww.confます。 インストールに関連するページによると、エンジニアはオリジナルを直接変更しているようです(初期値のコピーを保存しています)。例えば [www] ... user www-data group www-data pm.max_children 2 変更後に与える [www] ... user myapp ; was www-data group myapp ; was www-data pm.max_children 8 ; was 2 しかし、php-fpmの次のアップグレード後に繰り返されるタスクである可能性があります(さらに、構成が7.0パスにあるため、心配です)。 元のファイルを変更するのではなく、変更せずに、別のファイルを追加します。たとえばwwwmyapp.conf、同じプールを宣言し、変更された値のみを持つようにします に wwwmyapp.conf [www] ; same pool! user myapp group myapp pm.max_children 8 でpool.d、ファイルのリスト www.conf wwwmyapp.conf であるためphp-fpm.conf、すべてのプールのconfファイルがロードされている、の値がwwwmyappのものの後に読み込まれますwww(同じでwwwプール)と第1の値をオーバーライドする必要があります。 いくつかのテストで機能し、エラーが報告されないようですが、すべての値で常に機能しますか? 代わりに設定ファイルを直接上書きする必要がありますか? php.netでも、どのドキュメントでも回答が見つかりませんでした。

2
Ubuntu 16でApacheをプリフォークからイベントに切り替え、PHP 7を動作させる
Apacheは本番環境で実行が遅くなりました。しばらく答えを検索した後、私はようやく#apache IRCチャネルに行き、プロは次のコマンドでapacheモードを確認してもらいました。 sudo apachectl -V そして、サーバーMPMがpreforkであることがわかって驚いた。彼らは、本番サーバーではプリフォークを使用しないでくださいと強調しました。結局のところ、(おそらくDebianから継承された)Ubuntuパッケージは、ApacheでPHPを実行するための推奨される方法が proxy_fcgiとphp-fpmを明確に推奨し、最終的にfcgidを推奨しないという事実にもかかわらず、apacheをpreforkモードで実行することを主張しますプリフォークを使用: なぜprefork mpmでmod_phpを使用すべきではないのか mod_phpは常にすべてのhttpdプロセスにロードされます。httpdが静的/ php以外のコンテンツを提供している場合でも、そのメモリは使用中です。 mod_phpはスレッドセーフではなく、可能な限り最も遅い設定であるprefork mpm(マルチプロセス、スレッドなし)を使用するように強制します。 このページにはPHP-FPMの詳細も含まれていますが、これは少し複雑で不明瞭であり、多くの手動設定が含まれているようです。Ubuntu 16にはfastCGIモードなどのパッケージオプションがないのでがっかりしました。 a2enmodを使用してapacheをイベントモードに切り替えてみましたが、apacheを起動しようとすると、エラーが発生しました。 Apacheはスレッド化されたMPMを実行していますが、PHPモジュールはスレッドセーフになるようにコンパイルされていません。PHPを再コンパイルする必要があります とにかく、パッケージインストーラーにできる限り依存して、 PHP 7.0を搭載したUbuntu 16でfastCGIモードを実行するための最小限の段階的な手順があるかどうか疑問に思いました。私は現在、説明が不十分で曖昧な指示をたくさん見ていますが、私は本番環境を誤った決定で汚してしまうのではないかと心配しています。 また、誰かがタグオプションとしてmpm-eventを追加する必要があります。それが#apache IRCの人たちが推奨したことです。

6
php5-fpmが起動しなかった理由を知るにはどうすればよいですか?
サーバーに到達しようとすると504ゲートウェイタイムアウトが発生します。小さなチェックでphp5-fpmログにログが見つかりませんでしたが、念のため、再起動を試みました。それを再起動しようとしているとき: sudo service php5-fpm restart 私は得る[fail] が、私がするとき sudo service php5-fpm stop sudo service php5-fpm start エラーは出ません。 ログがない場合、どうすれば調査できますか?私に何ができる?
10 linux  php  php-fpm 

2
NginxからPHPにカスタムパラメータを渡す方法は?
パスとNginx 1.2.4組み合わせて使用してPHP-FPM 5.4.8おり、fastcgiカスタムパラメータをに渡そうとしていますPHP。これまでに見つけたオプションは次のとおりです。 envディレクティブを使用して環境変数を設定し、nginxで、getenv()または$_ENVからフェッチしPHPます。問題はenv、mainコンテキストでのみパラメーターを設定する必要があるのに対し、コンテキストでのみ動作するserverことです。 fastcgi_paramそのために設計されたディレクティブを使用します。 を使用して一部のパラメーターの値を変更しようとしましfastcgi_paramたが、失敗しました: nginx: fastcgi_param PATH_INFO "/var/tmp"; PHP: 私は見つけることができるすべての事前定義された配列をチェックしました: echo '<pre>'; echo "\n".'$GLOBALS'."\n"; var_dump($GLOBALS); echo "\n".'$_SERVER'."\n"; var_dump($_SERVER); echo "\n".'$_GET'."\n"; var_dump($_GET); echo "\n".'$_POST'."\n"; var_dump($_POST); echo "\n".'$_FILES'."\n"; var_dump($_FILES); echo "\n".'$_REQUEST'."\n"; var_dump($_REQUEST); echo "\n".'$_SESSION'."\n"; var_dump($_SESSION); echo "\n".'$_ENV'."\n"; var_dump($_ENV); echo "\n".'$_COOKIE'."\n"; var_dump($_COOKIE); echo "\n".'$php_errormsg'."\n"; var_dump($php_errormsg); echo "\n".'$HTTP_RAW_POST_DATA'."\n"; var_dump($HTTP_RAW_POST_DATA); echo "\n".'$http_response_header'."\n"; var_dump($http_response_header); …
10 php  nginx  fastcgi  php-fpm 

3
nginx fastcgi「プライマリスクリプトが不明です」(userdirの設定時)
nginxの設定は嫌いです。とても複雑です。PHPをユーザーディレクトリで動作させるにはどうすればよいですか?これが私のnginx.confの関連部分です: location ~ ^/~(.+?)(/.*)?$ { autoindex on; autoindex_exact_size off; alias /home/$1/public_html$2; location ~ \.php { include /etc/nginx/fastcgi.conf; fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; } } これは私にエラーを与えます:FastCGI sent in stderr: "Primary script unknown" while reading response header from upstreamnginxエラーログに。 ここに私があり/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 …
10 nginx  fastcgi  php-fpm 

1
PHP-FPMのchrootおよびchdirディレクトリ
私はphp-fpmをchrootingを有効にして設定しています。これで2つのオプションがあることがわかりました。正確な違いを知りたいのですが。 セットアップには以下があります。 chroot = /var/www/domains/domain.tld/ ; Chdir to this directory at the start. This value must be an absolute path. ; Default Value: current directory or / when chroot chdir = /docroot/ ここに2つの異なる場所がある理由と、phpがアクセスを許可されているパスはどれですか。/var/www/domains/domain.tld/PHP Webサイトにアクセスできますか、それともdocrootディレクトリ内のファイルにのみアクセスできます。 === 多分私にいくつかの具体的なアドバイスがあります。このような設定をしたい: ウェブルートの場所: /var/www/ domain.com/ |---conf/ | |--nginx.conf | |--php-fpm.conf | |---ssl/ |---logs/ |---session/ |---domains/ |---www/ …
10 php-fpm  chroot 

2
nginx、エイリアス、php-fpm =ファイルが見つかりません
DAViCalでnginxをセットアップしようとしています。しかし、ログに「FastCGIがstderrに送信されました:プライマリスクリプトが不明」という「ファイルが見つかりません」というエラーメッセージが表示されます。エイリアスに問題があるようですが、わかりません。 私の仮想ホスト: server { listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default_server ipv6only=on; ## listen for ipv6 root /var/www-data; index index.html index.htm index.shtml index.php; # Make site accessible from http://localhost/ server_name just.a.server; location / { # First attempt to serve request as file, …
10 php  nginx  php-fpm  fastcgi  alias 

1
php-fpm:start_servers、min_spare_servers、max_spare_serversの理解に役立つ
私のサーバー用にphp-fpmのインストールを調整しようとしていますがpm.start_servers、pm.min_spare_serversおよびpm.max_spare_servers変数をどうするかを理解するのに問題があります。使っていますpm = dynamic pm.max_children完全に明確です。各子プロセスは、一度に1つのWebクライアントにサービスを提供します。OK。では、「サーバー」とは何でしょうか。明らかに、私が持っているデフォルトの設定に基づいて、1つのサーバーが複数の子にサービスを提供できます。上限は?子供の数/サーバーの経験則として何を使用すればよいですか?それともまったく関連していますか?一部のフォーラムでは、サーバーの数はCPUコアの2 x#である必要があると誰かが主張していましたが、数がはるかに多い40〜50の推奨構成を見てきました。 PHPのドキュメントも、そこにある多くの「チューニングphp-fpm」記事もまったく役に立ちませんでした。
10 nginx  php  php-fpm 

3
docker + nginx + php-fpmを使用して静的コンテンツを提供する
dockerを使用してphp webappを構成しようとしています。アイデアはphp-fpm、スタンドアロンコンテナーでアプリを実行し、nginxを実行する別のコンテナーを用意することです。このセットアップのアイデアは、同じnginxコンテナを使用して、同じマシンですでに動作している他のウェブアプリにリクエストをプロキシすることです。問題は、nginx静的ファイル(js、cssなど)を適切に処理できないことfpmです。 ファイルシステムは次のようになります。 / ├── Makefile ├── config │ └── webapp.config └── webapp └── web ├── index.php └── static.js 私はMakefileこのように見えるものを使用してすべてを実行しています(これには興味がありませんdocker-compose): PWD:=$(shell pwd) CONFIG:='/config' WEBAPP:='/webapp' run: | run-network run-webapp run-nginx run-network: docker network create internal-net run-webapp: docker run --rm \ --name=webapp \ --net=internal-net \ --volume=$(PWD)$(WEBAPP):/var/www/webapp:ro \ -p 9000:9000 \ php:5.6.22-fpm-alpine run-nginx: …

2
Arch Linuxでphp(cli)とphp-fpmの個別の構成ファイルを作成するにはどうすればよいですか
2つのフォルダー/etc/php/7.0/cliを使用してdebianとubuntuで可能であるように、php(cli)とphp-fpm用に個別のphp.iniファイルを作成することは可能/etc/php/7.0/fpmですか? conf.d各サブシステムのディレクトリを持つ独立したモジュールをロードできれば、さらにクールになります。 誰かがそれを別々にどのように構成できるか考えていますか? また、ubuntu 16.04で構成されているような構造を使用しようとしましたが、成功しませんでした。


4
ウェブサーバーは異なる仮想ホストにランダムにサービスを提供します
Ubuntu Trustyでnginxを実行しています。1つのIPアドレスで実行され、https経由で複数のWebサイトにサービスを提供します。 ランダムに、それは作業負荷にわずかに関連しているように見えますが、単一の要求が間違ったvhostで発生することがあります。これにより、サービスの提供が要求さlustrum.thalia.nuれthalia.nu、その逆も同様です。これにより、ユーザーが突然別のWebサイトにアクセスするため、厄介なエラーページが表示されます。を押すとF5、ユーザーは元のターゲットに戻ります。 ブラウザやオペレーティングシステムに関連しているようには見えません。Firefox(Linux、Windows、Mac)、Edge(Windows)、Chrome(Linux、Windows、Android)、Safari(iOS)で発生することが確認されています。 この問題は、システムに負荷がかかるとより頻繁に発生するようであり、何らかの競合状態を示しています。 lustrum.thalia.nu server { server_name lustrum.thalia.nu; listen 443 ssl; ssl on; ssl_certificate /etc/nginx/certs/lustrum.thalia.nu.crt; ssl_certificate_key /etc/nginx/certs/lustrum.thalia.nu.key; add_header Strict-Transport-Security "max-age=63072000; preload"; root /var/www/thalia-lustrum/public_html; location / { index index.php; try_files $uri $uri/ /index.php?$args; } # Add trailing slash to */wp-admin requests. rewrite /wp-admin$ $scheme://$host$uri/ permanent; # Pass all .php …

1
PHP5-FPMはどのようにnginxにエラーを送信しますか?
ウェブ上で適切な説明を見つけることができなかったため、php-fpmとnginxでのエラーロギングを少し試しました。ほとんどのガイドは、php5-fpmからnginxにエラーを送りたい場合は変更catch_workers_outputするyes必要があると述べています。しかし、私の実験中に、catch_workers_outputがに設定されていても、nonginxによってエラーが適切に記録されていることがわかりました。 これが私の仮想ホスト設定です: server { server_name domain.com; return 301 http://www.domain.com$request_uri; access_log off; } server { listen 80; listen [::]:80; root /home/websites/domain.com; index index.php index.html index.htm; error_log /home/websites/logs/domain.com/error.log warn; access_log /home/websites/logs/domain.com/access.log; #switch on gzip gzip on; gzip_min_length 1100; gzip_buffers 10 32k; gzip_types text/plain application/x-javascript text/xml text/css; gzip_vary on; location / { try_files …
9 nginx  php-fpm 

2
php-fpmがnginxに空の応答を返す
nginxは/etc/nginx/fastcgi_params、ロケーションブロックの標準を使用して、fastcgi経由でphp-fpmに接続しています。 コマンドラインから/.status(php-fpm.ini :: ping.path)に接続するとcgi-fcgi -bind、結果は期待どおりに戻ります(X-Powered-Byセット、応答本文など)。 nginxでリクエストすると、結果は空に戻ります(X-Powered-Byセット、本文の長さまたはコンテンツなし)。nginxは「有効な」応答を受け取ったため、200を返します。 tcpdumpを監視して、パリティへの要求をFCGIヘッダーで分離しました(シェルによって設定されたユーザー関連の環境変数を除いています)。
9 php  nginx  php-fpm  fastcgi 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.