php.ini 設定 / CentOS 7 × Nginx 

プログラミング言語PHP

目次一覧

 状態:-  閲覧数:382  投稿日:2019-04-30  更新日:2019-11-15
インストール直後に行ったphp.ini設定 / 現状の問題点 / 現状のファイル構成確認

現在のphp.iniファイル内容確認 / php.ini編集 / ログ確認してみたが / 今後

アップロードできないファイルがある /「アップロード可ファイルサイズ」拡大対応 /「メモリ使用量の上限」を変更


インストール直後に行ったphp.ini設定 / 現状の問題点 / 現状のファイル構成確認

 閲覧数:120 投稿日:2019-04-30 更新日:2019-04-30 

インストール直後に行ったphp.ini設定



現在の問題点


PHPエラーログレベル
・「/var/log/nginx/error.logファイル」に出力されるPHPエラーログレベルが、低過ぎる
・具体的には、PHPエラーがNoticeレベルから出力されるため、重大なエラーが発生した際、探しづらいことこの上ない
→ Fatalエラー以上のレベルからログ出力するよう変更したい
nginxファイルに出力されるPHPエラーログレベルを変更したい

現在のファイル構成確認


2019年4月30日時点
$ ls -l /etc/php.d/
合計 256
-rw-r--r-- 1 root root  4847  3月  2  2018 10-opcache.ini
-rw-r--r-- 1 root root 37784  1月 30  2018 15-xdebug.ini
-rw-r--r-- 1 root root    50  3月  2  2018 20-bcmath.ini
-rw-r--r-- 1 root root    44  3月  2  2018 20-bz2.ini
-rw-r--r-- 1 root root    54  3月  2  2018 20-calendar.ini
-rw-r--r-- 1 root root    48  3月  2  2018 20-ctype.ini
-rw-r--r-- 1 root root    46  3月  2  2018 20-curl.ini
-rw-r--r-- 1 root root    44  3月  2  2018 20-dom.ini
-rw-r--r-- 1 root root    46  3月  2  2018 20-exif.ini
-rw-r--r-- 1 root root    54  3月  2  2018 20-fileinfo.ini
-rw-r--r-- 1 root root    44  3月  2  2018 20-ftp.ini
-rw-r--r-- 1 root root    42  3月  2  2018 20-gd.ini
-rw-r--r-- 1 root root    52  3月  2  2018 20-gettext.ini
-rw-r--r-- 1 root root    44  3月  2  2018 20-gmp.ini
-rw-r--r-- 1 root root    48  3月  2  2018 20-iconv.ini
-rw-r--r-- 1 root root    46  3月  2  2018 20-intl.ini
-rw-r--r-- 1 root root    46  3月  2  2018 20-json.ini
-rw-r--r-- 1 root root    46  3月  2  2018 20-ldap.ini
-rw-r--r-- 1 root root    54  3月  2  2018 20-mbstring.ini
-rw-r--r-- 1 root root    52  3月  2  2018 20-mysqlnd.ini
-rw-r--r-- 1 root root    44  3月  2  2018 20-pdo.ini
-rw-r--r-- 1 root root    48  3月  2  2018 20-pgsql.ini
-rw-r--r-- 1 root root    46  3月  2  2018 20-phar.ini
-rw-r--r-- 1 root root    48  3月  2  2018 20-posix.ini
-rw-r--r-- 1 root root    50  3月  2  2018 20-recode.ini
-rw-r--r-- 1 root root    48  3月  2  2018 20-shmop.ini
-rw-r--r-- 1 root root    56  3月  2  2018 20-simplexml.ini
-rw-r--r-- 1 root root    52  3月  2  2018 20-sockets.ini
-rw-r--r-- 1 root root    52  3月  2  2018 20-sqlite3.ini
-rw-r--r-- 1 root root    52  3月  2  2018 20-sysvmsg.ini
-rw-r--r-- 1 root root    52  3月  2  2018 20-sysvsem.ini
-rw-r--r-- 1 root root    52  3月  2  2018 20-sysvshm.ini
-rw-r--r-- 1 root root    46  3月  2  2018 20-tidy.ini
-rw-r--r-- 1 root root    56  3月  2  2018 20-tokenizer.ini
-rw-r--r-- 1 root root    44  3月  2  2018 20-xml.ini
-rw-r--r-- 1 root root    56  3月  2  2018 20-xmlwriter.ini
-rw-r--r-- 1 root root    44  3月  2  2018 20-xsl.ini
-rw-r--r-- 1 root root    50  8月 30  2017 30-mcrypt.ini
-rw-r--r-- 1 root root    50  3月  2  2018 30-mysqli.ini
-rw-r--r-- 1 root root    56  3月  2  2018 30-pdo_dblib.ini
-rw-r--r-- 1 root root    56  3月  2  2018 30-pdo_mysql.ini
-rw-r--r-- 1 root root    56  3月  2  2018 30-pdo_pgsql.ini
-rw-r--r-- 1 root root    58  3月  2  2018 30-pdo_sqlite.ini
-rw-r--r-- 1 root root    46  3月  2  2018 30-wddx.ini
-rw-r--r-- 1 root root    56  3月  2  2018 30-xmlreader.ini
-rw-r--r-- 1 root root  2264  3月  8  2018 40-apcu.ini
-rw-r--r-- 1 root root   293 11月  6  2017 40-igbinary.ini
-rw-r--r-- 1 root root   353 12月 26  2017 40-imagick.ini
-rw-r--r-- 1 root root   172  8月 30  2017 40-msgpack.ini
-rw-r--r-- 1 root root    47 12月 19  2017 40-zip.ini
-rw-r--r-- 1 root root  6750 11月 28  2017 50-memcached.ini
-rw-r--r-- 1 root root   645  3月  2  2018 opcache-default.blacklist
-rw-r--r-- 1 root root    28 12月 21  2017 opcache-php-tcpdf.blacklist


現在のphp.iniファイル内容確認 / php.ini編集 / ログ確認してみたが / 今後

 閲覧数:121 投稿日:2019-04-30 更新日:2019-05-01 

現在のphp.iniファイル内容確認


2019年4月30日時点
$ less /etc/php.ini
; This is php.ini-production INI file.

;;;;;;;;;;;;;;;;;;;
; Quick Reference ;
;;;;;;;;;;;;;;;;;;;
; The following are all the settings which are different in either the production
; or development versions of the INIs with respect to PHP's default behavior.
; Please see the actual settings later in the document for more details as to why
; we recommend these changes in PHP's behavior.

; display_errors
;   Default Value: On
;   Development Value: On
;   Production Value: Off

; display_startup_errors
;   Default Value: Off
;   Development Value: On
;   Production Value: Off

; error_reporting
;   Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
;   Development Value: E_ALL
;   Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT

; html_errors
;   Default Value: On
;   Development Value: On
;   Production value: On


//中略


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; This directive informs PHP of which errors, warnings and notices you would like
; it to take action for. The recommended way of setting values for this
; directive is through the use of the error level constants and bitwise
; operators. The error level constants are below here for convenience as well as
; some common settings and their meanings.
; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
; those related to E_NOTICE and E_STRICT, which together cover best practices and
; recommended coding standards in PHP. For performance reasons, this is the
; recommend error reporting setting. Your production server shouldn't be wasting
; resources complaining about best practices and coding standards. That's what
; development servers and development settings are for.
; Note: The php.ini-development file has this setting as E_ALL. This
; means it pretty much reports everything which is exactly what you want during
; development and early testing.
;
; Error Level Constants:
; E_ALL             - All errors and warnings (includes E_STRICT as of PHP 5.4.0)
; E_ERROR           - fatal run-time errors
; E_RECOVERABLE_ERROR  - almost fatal run-time errors
; E_WARNING         - run-time warnings (non-fatal errors)
; E_PARSE           - compile-time parse errors
; E_NOTICE          - run-time notices (these are warnings which often result
;                     from a bug in your code, but it's possible that it was
;                     intentional (e.g., using an uninitialized variable and
;                     relying on the fact it is automatically initialized to an
;                     empty string)
; E_STRICT          - run-time notices, enable to have PHP suggest changes
;                     to your code which will ensure the best interoperability
;                     and forward compatibility of your code
; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
;                     initial startup
; E_COMPILE_ERROR   - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR      - user-generated error message
; E_USER_WARNING    - user-generated warning message
; E_USER_NOTICE     - user-generated notice message
; E_DEPRECATED      - warn about code that will not work in future versions
;                     of PHP
; E_USER_DEPRECATED - user-generated deprecation warnings
;
; Common Values:
;   E_ALL (Show all errors, warnings and notices including coding standards.)
;   E_ALL & ~E_NOTICE  (Show all errors, except for notices)
;   E_ALL & ~E_NOTICE & ~E_STRICT  (Show all errors, except for notices and coding standards warnings.)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

; This directive controls whether or not and where PHP will output errors,
; notices and warnings too. Error output is very useful during development, but
; it could be very dangerous in production environments. Depending on the code
; which is triggering the error, sensitive information could potentially leak
; out of your application such as database usernames and passwords or worse.
; For production environments, we recommend logging errors rather than
; sending them to STDOUT.
; Possible Values:
;   Off = Do not display any errors
;   stderr = Display errors to STDERR (affects only CGI/CLI binaries!)
;   On or stdout = Display errors to STDOUT
; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/display-errors
display_errors = Off

; The display of errors which occur during PHP's startup sequence are handled
; separately from display_errors. PHP's default behavior is to suppress those
; errors from clients. Turning the display of startup errors on can be useful in
; debugging configuration problems. We strongly recommend you
; set this to 'off' for production servers.
; Default Value: Off
; Development Value: On
; Production Value: Off
; http://php.net/display-startup-errors
display_startup_errors = Off

; Besides displaying errors, PHP can also log errors to locations such as a
; server-specific log, STDERR, or a location specified by the error_log
; directive found below. While errors should not be displayed on productions
; servers they should still be monitored and logging is a great way to do that.
; Default Value: Off
; Development Value: On
; Production Value: On
; http://php.net/log-errors
log_errors = On

; Set maximum length of log_errors. In error_log information about the source is
; added. The default is 1024 and 0 allows to not apply any maximum length at all.
; http://php.net/log-errors-max-len
log_errors_max_len = 1024

; Do not log repeated messages. Repeated errors must occur in same file on same
; line unless ignore_repeated_source is set true.
; http://php.net/ignore-repeated-errors
ignore_repeated_errors = Off

; Ignore source of message when ignoring repeated messages. When this setting
; is On you will not log errors with repeated messages from different files or
; source lines.
; http://php.net/ignore-repeated-source
ignore_repeated_source = Off

; If this parameter is set to Off, then memory leaks will not be shown (on
; stdout or in the log). This has only effect in a debug compile, and if
; error reporting includes E_WARNING in the allowed list
; http://php.net/report-memleaks
report_memleaks = On

; This setting is on by default.
;report_zend_debug = 0

; Store the last error/warning message in $php_errormsg (boolean). Setting this value
; to On can assist in debugging and is appropriate for development servers. It should
; however be disabled on production servers.
; This directive is DEPRECATED.
; Default Value: Off
; Development Value: Off
; Production Value: Off
; http://php.net/track-errors
;track_errors = Off

; Turn off normal error reporting and emit XML-RPC error XML
; http://php.net/xmlrpc-errors
;xmlrpc_errors = 0

; An XML-RPC faultCode
;xmlrpc_error_number = 0

; When PHP displays or logs an error, it has the capability of formatting the
; error message as HTML for easier reading. This directive controls whether
; the error message is formatted as HTML or not.
; Note: This directive is hardcoded to Off for the CLI SAPI
; Default Value: On
; Development Value: On
; Production value: On
; http://php.net/html-errors
html_errors = On

; If html_errors is set to On *and* docref_root is not empty, then PHP
; produces clickable error messages that direct to a page describing the error
; or function causing the error in detail.
; You can download a copy of the PHP manual from http://php.net/docs
; and change docref_root to the base URL of your local copy including the
; leading '/'. You must also specify the file extension being used including
; the dot. PHP's default behavior is to leave these settings empty, in which
; case no links to documentation are generated.
; Note: Never use this feature for production boxes.
; http://php.net/docref-root
; Examples
;docref_root = "/phpmanual/"

; http://php.net/docref-ext
;docref_ext = .html

; String to output before an error message. PHP's default behavior is to leave
; this setting blank.
; http://php.net/error-prepend-string
; Example:
;error_prepend_string = "<span style='color: #ff0000'>"

; String to output after an error message. PHP's default behavior is to leave
;docref_root = "/phpmanual/"

; http://php.net/docref-ext
;docref_ext = .html

; String to output before an error message. PHP's default behavior is to leave
; this setting blank.
; http://php.net/error-prepend-string
; Example:
;error_prepend_string = "<span style='color: #ff0000'>"

; String to output after an error message. PHP's default behavior is to leave
; this setting blank.
; http://php.net/error-append-string
; Example:
;error_append_string = "</span>"

; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog.
;error_log = syslog

; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog.
;error_log = syslog


php.ini編集


「E_NOTICE」「E_WARNING」「E_DEPRECATED」「E_STRICT」以外の全てのエラーを表示
$ sudo vi /etc/php.ini
;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED & ~E_STRICT

error_reporting

php-fpm再起動
$ sudo systemctl restart php-fpm

/nginx.conf の syntax 確認後、Nginx再起動
・この処理は不要かも
$ sudo sh -c 'nginx -t && systemctl restart nginx.service || systemctl status nginx.service -l'
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful


ログ確認してみたが


期待した結果を得られなかったので
特定バーチャルドメインのみ「エラーログ出力先」を変更

今後


エラーログの保存先パスの設定
nginxでerror_log出力先を設定ファイルで指定しても`/var/log/nginx/error.log`を読みにいってしまう件
PHPのエラーハンドリングとロギング 
PHPのエラーログ出力のお悩みを解決!簡単解説で最速理解 
【nginx】logの出力先がconfファイル通りにならない

php.ini で設定しても出力されないエラーログをちゃんと出すポイント!
nginx + php-fpm でエラーが出て動かない場合の確認箇所と対処方法

アップロードできないファイルがある /「アップロード可ファイルサイズ」拡大対応 /「メモリ使用量の上限」を変更

 閲覧数:159 投稿日:2019-09-03 更新日:2019-11-15 

ファイルアップロードできないファイルがある


2019年9月3日時点のphpinfo();
メモリ使用量の上限
memory_limit 128M 128M

POSTデータの最大サイズ ※合計サイズ
post_max_size 8M 8M

1ファイルあたりの最大アップロードサイズ
upload_max_filesize 2M 2M

▼tweet.js
27.9MB

「アップロード可ファイルサイズ」拡大対応


$ sudo vi /etc/php.ini
; post_max_size = 8M
post_max_size = 50M

;upload_max_filesize = 2M
upload_max_filesize = 50M


「メモリ使用量の上限」を変更


エラー発生
( ! ) Fatal error: Allowed memory size of 209715200 bytes exhausted (tried to allocate 4096 bytes) in /var/www/html/xxxx/2/upload.php on line 222

現状確認
<?php phpinfo() ?>
memory_limit	128M	128M


設定変更
$ sudo vi /etc/php.ini
; memory_limit = 128M
memory_limit = 256M


変更反映
再起動
$ sudo systemctl restart php-fpm
$ sudo sh -c 'nginx -t && systemctl restart nginx.service || systemctl status nginx.service -l'



PHP実行ユーザ設定 / CentOS7 / Nginx



週間人気ページランキング / 9-18 → 9-24
順位 ページタイトル抜粋 アクセス数
1 Nginx設定。エラーログレベル | Nginx(Webサーバ) 17
2 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 14
3 9回目-13.MySQL5.7.21設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 12
4 PHPのmb_send_mail関数でメール送信できない | メール処理システム 10
5 ImageMagick と imagick の違い | ImageMagick(ソフトウェアスイート) 9
6 さくらVPS0 8
6 tar: これは tar アーカイブではないようです 8
7 manページ日本語表示 | CentOS 7 (CentOS) 7
7 Reached target Shutdown メッセージが表示されたあと、シャットダウンまたは再起動プロセスがハングアップする | CentOS 7 (CentOS) 7
8 ABRT により 問題が検出されました | CentOS 7 (CentOS) 6
8 PHPファイルでchmodエラー | PHP(プログラミング言語) 6
8 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 6
8 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 6
9 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 5
9 echo と cat の違い 5
10 phpMyAdmin 4.4.3(phpMyAdmin) カテゴリー 4
10 6回目-10.Nginxでバーチャルホスト設定確認 | CentOS 7 2週間無料のお試し期間 6回目(さくらVPS) 4
10 「さくらVPS」で、「CentOS6」を「CentOS7」へ変更するためには? | CentOS 7 2週間無料のお試し期間 Link(さくらVPS) 4
10 cronで定期実行しているphpファイルを、コマンドライン経由で即時実行する | cron(Linuxコマンド) 4
10 MySQL 5.5 から 5.6 へのアップグレード | MySQL(データベース) 4
2021/9/25 1:01 更新