バージョン5からのアップグレード時に、Ubuntuの一部のサーバーを破壊するPHP 7の変更

明らかに、Habréに関する別の記事に値するものではありませんが、間違いは多くの人々に影響を与える可能性があるので、私はまだ書くことにしました。







http://php.net/manual/en/configuration.file.php#configuration.file.changelog







7.0.0ハッシュ記号(#)はコメントとして認識されなくなりました。

これはどうやら? テストサーバーの管理者は、構成内のエラーを検出し、すぐに修正します。 しかし、ここではphp-fpm.conf



1つの不快な機能が出てphp-fpm.conf



誤ったphp-fpm.conf



で開始することを拒否しphp-fpm.conf



が、誤ったphp.ini



で静かに開始し、すべての設定を無視してデフォルト値を使用します。 サービスの起動スクリプトがエラーを飲み込むため、エラーはコンソールに表示されず、php-fpmログに書き込まれません。









php.ini



が5番目のバージョンからコピーされ、7番目のより厳格なパーサーがそれをエラーで読み取った場合、php-fpmはデフォルト値で静かに動作します。 たとえば、コメントに#



が使用されていて、そのようなコメントに開き括弧が含まれている場合。 彼は、変更ログでの発表にもかかわらず、最初の括弧なしで、そのようなコメントを通常どおりに認識しています。







ダウンロードファイルの最大サイズはpost_max_size=8m



expose_php



オンになり、 X-Powered-By



ヘッダーで使用されるPHPバージョンが渡され、空のdisable_functions



、潜在的に安全でない機能を無効にします。すべての楽しみ。







UbuntuのPHPメンテナーは、松葉杖でこの機能を回避しようとします。







 /etc/systemd/system/multi-user.target.wants/php7.0-fpm.service: ... ExecStartPre=/usr/lib/php/php7.0-fpm-checkconf ... /usr/lib/php/php7.0-fpm-checkconf: ... errors=$(/usr/sbin/php-fpm7.0 --fpm-config "$CONFFILE" -t 2>&1 | grep "\[ERROR\]" || true); ...
      
      





しかし、松葉杖は機能しません:







 root@xenial:~# /usr/sbin/php-fpm7.0 --fpm-config /etc/php/7.0/fpm/php-fpm.conf --test PHP: syntax error, unexpected '(' in /etc/php/7.0/fpm/php.ini on line 6 [14-Sep-2016 14:24:46] NOTICE: configuration file /etc/php/7.0/fpm/php-fpm.conf test is successful root@xenial:~# /usr/lib/php/php7.0-fpm-checkconf; echo $? 0
      
      





人気のあるppa:ondrej / phpのphp7.0-fpmパッケージには、通常、ubuntuが信頼できるサーバーまたは正確なサーバーにPHP 7をインストールする場所が含まれているため、このようなチェックはまったく含まれていません。







合計:PHP 5からPHP 7にアップグレードする場合、php.iniの設定を無視せず、デフォルト値で起動しないことを確認してください。







PS

» PPAのチケット:ondrej / php

» ubuntu xenialのphp7.0-fpmのチケット







UPD:コメントのリクエストにより、PHP開発者にバグを投稿しました: 73099








All Articles