From ef34991abd1d1e521e9637fe166a158f228458c1 Mon Sep 17 00:00:00 2001 From: vadym Novoselskyi Date: Thu, 22 Aug 2024 12:58:09 +0200 Subject: [PATCH] init + add M0 --- .gitignore | 14 + README.md | 36 + config/mysql/my.cnf | 208 +++ config/nginx/nginx.conf | 57 + config/php/php.ini | 1944 +++++++++++++++++++++++++++ db/.gitkeep | 1 + docker-compose.yml | 47 + docker/php/Dockerfile | 48 + www/public/M0/01/evaluate.php | 34 + www/public/M0/01/index.html | 28 + www/public/M0/02/evaluate.php | 34 + www/public/M0/02/index.html | 30 + www/public/M0/03/css/gridCSS.css | 85 ++ www/public/M0/03/css/styleSheet.css | 171 +++ www/public/M0/03/img/htmlcss.png | Bin 0 -> 120714 bytes www/public/M0/03/inc/footer.html | 3 + www/public/M0/03/inc/header.html | 16 + www/public/M0/03/index.php | 51 + www/public/M1/index.php | 11 + www/public/index.php | 14 + 20 files changed, 2832 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 config/mysql/my.cnf create mode 100644 config/nginx/nginx.conf create mode 100644 config/php/php.ini create mode 100644 db/.gitkeep create mode 100644 docker-compose.yml create mode 100644 docker/php/Dockerfile create mode 100644 www/public/M0/01/evaluate.php create mode 100644 www/public/M0/01/index.html create mode 100644 www/public/M0/02/evaluate.php create mode 100644 www/public/M0/02/index.html create mode 100644 www/public/M0/03/css/gridCSS.css create mode 100644 www/public/M0/03/css/styleSheet.css create mode 100644 www/public/M0/03/img/htmlcss.png create mode 100644 www/public/M0/03/inc/footer.html create mode 100644 www/public/M0/03/inc/header.html create mode 100644 www/public/M0/03/index.php create mode 100644 www/public/M1/index.php create mode 100644 www/public/index.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8729019 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +.DS_Store + +node_modules/* + +db/* +!db/.gitkeep + +!nginx +nginx/* +!nginx/nginx.conf + +!php +php/* +!php/php.ini diff --git a/README.md b/README.md new file mode 100644 index 0000000..473adf4 --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +## Docker-compose LEMP +### Inkluderar +- nginx -> localhost:80 +- php +- mariadb -> mariadb +- phpmyadmin -> localhost:8080 + +### HowTo + +##### Webbroten + www/public +##### Starta servern (containern) med + docke compose up -d +##### Stoppa servern (containern) med + docker compose down +##### Serverns url + localhost +##### phpmyadmin + localhost:8080 +##### Anslut till MariaDB med php + +````php + // Ej nödvändigt att avslut "ren" php med ?> +```` +### ToDo + diff --git a/config/mysql/my.cnf b/config/mysql/my.cnf new file mode 100644 index 0000000..c9961c0 --- /dev/null +++ b/config/mysql/my.cnf @@ -0,0 +1,208 @@ +# Copyright © 2020 Joel Paulsson, Noah Jarvis +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +# MariaDB database server configuration file. +# +# You can copy this file to one of: +# - "/etc/mysql/my.cnf" to set global options, +# - "~/.my.cnf" to set user-specific options. +# +# One can use all long options that the program supports. +# Run program with --help to get a list of available options and with +# --print-defaults to see which it w ould actually understand and use. +# +# For explanations see +# http://dev.mysql.com/doc/mysql/en/server-system-variables.html + +# This will be passed to all mysql clients +# It has been reported that passwords should be enclosed with ticks/quotes +# escpecially if they contain "#" chars... +# Remember to edit /etc/mysql/debian.cnf when changing the socket location. +[client] +port = 3306 +socket = /var/run/mysqld/mysqld.sock +default-character-set = utf8mb4 + +# Here is entries for some specific programs +# The following values assume you have at least 32M ram + +# This was formally known as [safe_mysqld]. Both versions are currently parsed. +[mysqld_safe] +socket = /var/run/mysqld/mysqld.sock +nice = 0 + +[mysqld] +character-set-client-handshake = FALSE +character-set-server = utf8mb4 +collation-server = utf8mb4_unicode_ci + +# +# * Basic Settings +# +#user = mysql +pid-file = /var/run/mysqld/mysqld.pid +socket = /var/run/mysqld/mysqld.sock +port = 3306 +basedir = /usr +datadir = /var/lib/mysql +tmpdir = /tmp +lc_messages_dir = /usr/share/mysql +lc_messages = en_US +skip-external-locking +# +# Instead of skip-networking the default is now to listen only on +# localhost which is more compatible and is not less secure. +#bind-address = 172.17.0.1 +# +# * Fine Tuning +# +max_connections = 100 +connect_timeout = 5 +wait_timeout = 600 +max_allowed_packet = 16M +thread_cache_size = 128 +sort_buffer_size = 4M +bulk_insert_buffer_size = 16M +tmp_table_size = 32M +max_heap_table_size = 32M +# +# * MyISAM +# +# This replaces the startup script and checks MyISAM tables if needed +# the first time they are touched. On error, make copy and try a repair. +myisam_recover_options = BACKUP +key_buffer_size = 128M +#open-files-limit = 2000 +table_open_cache = 400 +myisam_sort_buffer_size = 512M +concurrent_insert = 2 +read_buffer_size = 2M +read_rnd_buffer_size = 1M +# +# * Query Cache Configuration +# +# Cache only tiny result sets, so we can fit more in the query cache. +query_cache_limit = 128K +query_cache_size = 64M +# for more write intensive setups, set to DEMAND or OFF +#query_cache_type = DEMAND +# +# * Logging and Replication +# +# Both location gets rotated by the cronjob. +# Be aware that this log type is a performance killer. +# As of 5.1 you can enable the log at runtime! +#general_log_file = /var/log/mysql/mysql.log +#general_log = 1 +# +# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf. +# +# we do want to know about network errors and such +#log_warnings = 2 +# +# Enable the slow query log to see queries with especially long duration +#slow_query_log[={0|1}] +slow_query_log_file = /var/log/mysql/mariadb-slow.log +long_query_time = 10 +#log_slow_rate_limit = 1000 +#log_slow_verbosity = query_plan + +#log-queries-not-using-indexes +#log_slow_admin_statements +# +# The following can be used as easy to replay backup logs or for replication. +# note: if you are setting up a replication slave, see README.Debian about +# other settings you may need to change. +#server-id = 1 +#report_host = master1 +#auto_increment_increment = 2 +#auto_increment_offset = 1 +#log_bin = /var/log/mysql/mariadb-bin +#log_bin_index = /var/log/mysql/mariadb-bin.index +# not fab for performance, but safer +#sync_binlog = 1 +expire_logs_days = 10 +max_binlog_size = 100M +# slaves +#relay_log = /var/log/mysql/relay-bin +#relay_log_index = /var/log/mysql/relay-bin.index +#relay_log_info_file = /var/log/mysql/relay-bin.info +#log_slave_updates +#read_only +# +# If applications support it, this stricter sql_mode prevents some +# mistakes like inserting invalid dates etc. +#sql_mode = NO_ENGINE_SUBSTITUTION,TRADITIONAL +# +# * InnoDB +# +# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. +# Read the manual for more InnoDB related options. There are many! +default_storage_engine = InnoDB +innodb_buffer_pool_size = 256M +innodb_log_buffer_size = 8M +innodb_file_per_table = 1 +innodb_open_files = 400 +innodb_io_capacity = 400 +innodb_flush_method = O_DIRECT +# +# * Security Features +# +# Read the manual, too, if you want chroot! +# chroot = /var/lib/mysql/ +# +# For generating SSL certificates I recommend the OpenSSL GUI "tinyca". +# +# ssl-ca=/etc/mysql/cacert.pem +# ssl-cert=/etc/mysql/server-cert.pem +# ssl-key=/etc/mysql/server-key.pem + +# +# * Galera-related settings +# +[galera] +# Mandatory settings +#wsrep_on=ON +#wsrep_provider= +#wsrep_cluster_address= +#binlog_format=row +#default_storage_engine=InnoDB +#innodb_autoinc_lock_mode=2 +# +# Allow server to accept connections on all interfaces. +# +#bind-address=0.0.0.0 +# +# Optional setting +#wsrep_slave_threads=1 +#innodb_flush_log_at_trx_commit=0 + +[mysqldump] +quick +quote-names +max_allowed_packet = 16M + +[mysql] +default-character-set = utf8mb4 +no-auto-rehash # faster start of mysql but no tab completion + +[isamchk] +key_buffer = 16M + +# +# * IMPORTANT: Additional settings that can override those from this file! +# The files must end with '.cnf', otherwise they'll be ignored. +# +!includedir /etc/mysql/conf.d/ diff --git a/config/nginx/nginx.conf b/config/nginx/nginx.conf new file mode 100644 index 0000000..a748351 --- /dev/null +++ b/config/nginx/nginx.conf @@ -0,0 +1,57 @@ +events {} + +http { + server { + server_name localhost; + root /var/www/public; + index index.php index.html index.htm; + listen 80; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + # PHP-FPM Configuration Nginx + location ~ \.php$ { + try_files $uri = 404; + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass php:9000; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param REQUEST_URI $request_uri; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + } + + # server { + # server_name localhost; + + # listen 443 ssl; + # fastcgi_param HTTPS on; + + # ssl_certificate /etc/ssl/server.pem; + # ssl_certificate_key /etc/ssl/server.key; + # ssl_protocols TLSv1.3; + + # index index.php index.html; + # error_log /var/log/nginx/error.log; + # access_log /var/log/nginx/access.log; + # root /var/www/html/public; + + # location ~ \.php$ { + # try_files $uri =404; + # fastcgi_split_path_info ^(.+\.php)(/.+)$; + # fastcgi_pass php:9000; + # fastcgi_index index.php; + # include fastcgi_params; + # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + # fastcgi_param PATH_INFO $fastcgi_path_info; + # } + + error_log /var/log/nginx/error.log; + access_log /var/log/nginx/access.log; + } +} diff --git a/config/php/php.ini b/config/php/php.ini new file mode 100644 index 0000000..74aa42e --- /dev/null +++ b/config/php/php.ini @@ -0,0 +1,1944 @@ +[PHP] + +;;;;;;;;;;;;;;;;;;; +; About php.ini ; +;;;;;;;;;;;;;;;;;;; +; PHP's initialization file, generally called php.ini, is responsible for +; configuring many of the aspects of PHP's behavior. + +; PHP attempts to find and load this configuration from a number of locations. +; The following is a summary of its search order: +; 1. SAPI module specific location. +; 2. The PHPRC environment variable. (As of PHP 5.2.0) +; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0) +; 4. Current working directory (except CLI) +; 5. The web server's directory (for SAPI modules), or directory of PHP +; (otherwise in Windows) +; 6. The directory from the --with-config-file-path compile time option, or the +; Windows directory (usually C:\windows) +; See the PHP docs for more specific information. +; http://php.net/configuration.file + +; The syntax of the file is extremely simple. Whitespace and lines +; beginning with a semicolon are silently ignored (as you probably guessed). +; Section headers (e.g. [Foo]) are also silently ignored, even though +; they might mean something in the future. + +; Directives following the section heading [PATH=/www/mysite] only +; apply to PHP files in the /www/mysite directory. Directives +; following the section heading [HOST=www.example.com] only apply to +; PHP files served from www.example.com. Directives set in these +; special sections cannot be overridden by user-defined INI files or +; at runtime. Currently, [PATH=] and [HOST=] sections only work under +; CGI/FastCGI. +; http://php.net/ini.sections + +; Directives are specified using the following syntax: +; directive = value +; Directive names are *case sensitive* - foo=bar is different from FOO=bar. +; Directives are variables used to configure PHP or PHP extensions. +; There is no name validation. If PHP can't find an expected +; directive because it is not set or is mistyped, a default value will be used. + +; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one +; of the INI constants (On, Off, True, False, Yes, No and None) or an expression +; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a +; previously set variable or directive (e.g. ${foo}) + +; Expressions in the INI file are limited to bitwise operators and parentheses: +; | bitwise OR +; ^ bitwise XOR +; & bitwise AND +; ~ bitwise NOT +; ! boolean NOT + +; Boolean flags can be turned on using the values 1, On, True or Yes. +; They can be turned off using the values 0, Off, False or No. + +; An empty string can be denoted by simply not writing anything after the equal +; sign, or by using the None keyword: + +; foo = ; sets foo to an empty string +; foo = None ; sets foo to an empty string +; foo = "None" ; sets foo to the string 'None' + +; If you use constants in your value, and these constants belong to a +; dynamically loaded extension (either a PHP extension or a Zend extension), +; you may only use these constants *after* the line that loads the extension. + +;;;;;;;;;;;;;;;;;;; +; About this file ; +;;;;;;;;;;;;;;;;;;; +; PHP comes packaged with two INI files. One that is recommended to be used +; in production environments and one that is recommended to be used in +; development environments. + +; php.ini-production contains settings which hold security, performance and +; best practices at its core. But please be aware, these settings may break +; compatibility with older or less security conscience applications. We +; recommending using the production ini in production and testing environments. + +; php.ini-development is very similar to its production variant, except it is +; much more verbose when it comes to errors. We recommend using the +; development version only in development environments, as errors shown to +; application users can inadvertently leak otherwise secure information. + +; This is the php.ini-development 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: On +; Development Value: On +; Production Value: Off + +; error_reporting +; Default Value: E_ALL +; Development Value: E_ALL +; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT + +; log_errors +; Default Value: Off +; Development Value: On +; Production Value: On + +; max_input_time +; Default Value: -1 (Unlimited) +; Development Value: 60 (60 seconds) +; Production Value: 60 (60 seconds) + +; output_buffering +; Default Value: Off +; Development Value: 4096 +; Production Value: 4096 + +; register_argc_argv +; Default Value: On +; Development Value: Off +; Production Value: Off + +; request_order +; Default Value: None +; Development Value: "GP" +; Production Value: "GP" + +; session.gc_divisor +; Default Value: 100 +; Development Value: 1000 +; Production Value: 1000 + +; session.sid_bits_per_character +; Default Value: 4 +; Development Value: 5 +; Production Value: 5 + +; short_open_tag +; Default Value: On +; Development Value: Off +; Production Value: Off + +; variables_order +; Default Value: "EGPCS" +; Development Value: "GPCS" +; Production Value: "GPCS" + +; zend.exception_ignore_args +; Default Value: Off +; Development Value: Off +; Production Value: On + +; zend.exception_string_param_max_len +; Default Value: 15 +; Development Value: 15 +; Production Value: 0 + +;;;;;;;;;;;;;;;;;;;; +; php.ini Options ; +;;;;;;;;;;;;;;;;;;;; +; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini" +;user_ini.filename = ".user.ini" + +; To disable this feature set this option to an empty value +;user_ini.filename = + +; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes) +;user_ini.cache_ttl = 300 + +;;;;;;;;;;;;;;;;;;;; +; Language Options ; +;;;;;;;;;;;;;;;;;;;; + +; Enable the PHP scripting language engine under Apache. +; http://php.net/engine +engine = On + +; This directive determines whether or not PHP will recognize code between +; tags as PHP source which should be processed as such. It is +; generally recommended that should be used and that this feature +; should be disabled, as enabling it may result in issues when generating XML +; documents, however this remains supported for backward compatibility reasons. +; Note that this directive does not control the would work. +; http://php.net/syntax-highlighting +;highlight.string = #DD0000 +;highlight.comment = #FF9900 +;highlight.keyword = #007700 +;highlight.default = #0000BB +;highlight.html = #000000 + +; If enabled, the request will be allowed to complete even if the user aborts +; the request. Consider enabling it if executing long requests, which may end up +; being interrupted by the user or a browser timing out. PHP's default behavior +; is to disable this feature. +; http://php.net/ignore-user-abort +;ignore_user_abort = On + +; Determines the size of the realpath cache to be used by PHP. This value should +; be increased on systems where PHP opens many files to reflect the quantity of +; the file operations performed. +; Note: if open_basedir is set, the cache is disabled +; http://php.net/realpath-cache-size +;realpath_cache_size = 4096k + +; Duration of time, in seconds for which to cache realpath information for a given +; file or directory. For systems with rarely changing files, consider increasing this +; value. +; http://php.net/realpath-cache-ttl +;realpath_cache_ttl = 120 + +; Enables or disables the circular reference collector. +; http://php.net/zend.enable-gc +zend.enable_gc = On + +; If enabled, scripts may be written in encodings that are incompatible with +; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such +; encodings. To use this feature, mbstring extension must be enabled. +;zend.multibyte = Off + +; Allows to set the default encoding for the scripts. This value will be used +; unless "declare(encoding=...)" directive appears at the top of the script. +; Only affects if zend.multibyte is set. +;zend.script_encoding = + +; Allows to include or exclude arguments from stack traces generated for exceptions. +; In production, it is recommended to turn this setting on to prohibit the output +; of sensitive information in stack traces +; Default Value: Off +; Development Value: Off +; Production Value: On +zend.exception_ignore_args = Off + +; Allows setting the maximum string length in an argument of a stringified stack trace +; to a value between 0 and 1000000. +; This has no effect when zend.exception_ignore_args is enabled. +; Default Value: 15 +; Development Value: 15 +; Production Value: 0 +zend.exception_string_param_max_len = 15 + +;;;;;;;;;;;;;;;;; +; Miscellaneous ; +;;;;;;;;;;;;;;;;; + +; Decides whether PHP may expose the fact that it is installed on the server +; (e.g. by adding its signature to the Web server header). It is no security +; threat in any way, but it makes it possible to determine whether you use PHP +; on your server or not. +; http://php.net/expose-php +expose_php = On + +;;;;;;;;;;;;;;;;;;; +; Resource Limits ; +;;;;;;;;;;;;;;;;;;; + +; Maximum execution time of each script, in seconds +; http://php.net/max-execution-time +; Note: This directive is hardcoded to 0 for the CLI SAPI +max_execution_time = 30 + +; Maximum amount of time each script may spend parsing request data. It's a good +; idea to limit this time on productions servers in order to eliminate unexpectedly +; long running scripts. +; Note: This directive is hardcoded to -1 for the CLI SAPI +; Default Value: -1 (Unlimited) +; Development Value: 60 (60 seconds) +; Production Value: 60 (60 seconds) +; http://php.net/max-input-time +max_input_time = 60 + +; Maximum input variable nesting level +; http://php.net/max-input-nesting-level +;max_input_nesting_level = 64 + +; How many GET/POST/COOKIE input variables may be accepted +;max_input_vars = 1000 + +; Maximum amount of memory a script may consume +; http://php.net/memory-limit +memory_limit = 128M + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; 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 +; Development Value: E_ALL +; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT +; http://php.net/error-reporting +error_reporting = E_ALL + +; 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 = On + +; The display of errors which occur during PHP's startup sequence are handled +; separately from display_errors. We strongly recommend you set this to 'off' +; for production servers to avoid leaking configuration details. +; Default Value: On +; Development Value: On +; Production Value: Off +; http://php.net/display-startup-errors +display_startup_errors = On + +; 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 is only effective 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 off by default. +;report_zend_debug = 0 + +; 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 +; 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 = "" + +; 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 = "" + +; 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 (Event Log on Windows). +;error_log = syslog + +; The syslog ident is a string which is prepended to every message logged +; to syslog. Only used when error_log is set to syslog. +;syslog.ident = php + +; The syslog facility is used to specify what type of program is logging +; the message. Only used when error_log is set to syslog. +;syslog.facility = user + +; Set this to disable filtering control characters (the default). +; Some loggers only accept NVT-ASCII, others accept anything that's not +; control characters. If your logger accepts everything, then no filtering +; is needed at all. +; Allowed values are: +; ascii (all printable ASCII characters and NL) +; no-ctrl (all characters except control characters) +; all (all characters) +; raw (like "all", but messages are not split at newlines) +; http://php.net/syslog.filter +;syslog.filter = ascii + +;windows.show_crt_warning +; Default value: 0 +; Development value: 0 +; Production value: 0 + +;;;;;;;;;;;;;;;;; +; Data Handling ; +;;;;;;;;;;;;;;;;; + +; The separator used in PHP generated URLs to separate arguments. +; PHP's default setting is "&". +; http://php.net/arg-separator.output +; Example: +;arg_separator.output = "&" + +; List of separator(s) used by PHP to parse input URLs into variables. +; PHP's default setting is "&". +; NOTE: Every character in this directive is considered as separator! +; http://php.net/arg-separator.input +; Example: +;arg_separator.input = ";&" + +; This directive determines which super global arrays are registered when PHP +; starts up. G,P,C,E & S are abbreviations for the following respective super +; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty +; paid for the registration of these arrays and because ENV is not as commonly +; used as the others, ENV is not recommended on productions servers. You +; can still get access to the environment variables through getenv() should you +; need to. +; Default Value: "EGPCS" +; Development Value: "GPCS" +; Production Value: "GPCS"; +; http://php.net/variables-order +variables_order = "GPCS" + +; This directive determines which super global data (G,P & C) should be +; registered into the super global array REQUEST. If so, it also determines +; the order in which that data is registered. The values for this directive +; are specified in the same manner as the variables_order directive, +; EXCEPT one. Leaving this value empty will cause PHP to use the value set +; in the variables_order directive. It does not mean it will leave the super +; globals array REQUEST empty. +; Default Value: None +; Development Value: "GP" +; Production Value: "GP" +; http://php.net/request-order +request_order = "GP" + +; This directive determines whether PHP registers $argv & $argc each time it +; runs. $argv contains an array of all the arguments passed to PHP when a script +; is invoked. $argc contains an integer representing the number of arguments +; that were passed when the script was invoked. These arrays are extremely +; useful when running scripts from the command line. When this directive is +; enabled, registering these variables consumes CPU cycles and memory each time +; a script is executed. For performance reasons, this feature should be disabled +; on production servers. +; Note: This directive is hardcoded to On for the CLI SAPI +; Default Value: On +; Development Value: Off +; Production Value: Off +; http://php.net/register-argc-argv +register_argc_argv = Off + +; When enabled, the ENV, REQUEST and SERVER variables are created when they're +; first used (Just In Time) instead of when the script starts. If these +; variables are not used within a script, having this directive on will result +; in a performance gain. The PHP directive register_argc_argv must be disabled +; for this directive to have any effect. +; http://php.net/auto-globals-jit +auto_globals_jit = On + +; Whether PHP will read the POST data. +; This option is enabled by default. +; Most likely, you won't want to disable this option globally. It causes $_POST +; and $_FILES to always be empty; the only way you will be able to read the +; POST data will be through the php://input stream wrapper. This can be useful +; to proxy requests or to process the POST data in a memory efficient fashion. +; http://php.net/enable-post-data-reading +;enable_post_data_reading = Off + +; Maximum size of POST data that PHP will accept. +; Its value may be 0 to disable the limit. It is ignored if POST data reading +; is disabled through enable_post_data_reading. +; http://php.net/post-max-size +post_max_size = 8M + +; Automatically add files before PHP document. +; http://php.net/auto-prepend-file +auto_prepend_file = + +; Automatically add files after PHP document. +; http://php.net/auto-append-file +auto_append_file = + +; By default, PHP will output a media type using the Content-Type header. To +; disable this, simply set it to be empty. +; +; PHP's built-in default media type is set to text/html. +; http://php.net/default-mimetype +default_mimetype = "text/html" + +; PHP's default character set is set to UTF-8. +; http://php.net/default-charset +default_charset = "UTF-8" + +; PHP internal character encoding is set to empty. +; If empty, default_charset is used. +; http://php.net/internal-encoding +;internal_encoding = + +; PHP input character encoding is set to empty. +; If empty, default_charset is used. +; http://php.net/input-encoding +;input_encoding = + +; PHP output character encoding is set to empty. +; If empty, default_charset is used. +; See also output_buffer. +; http://php.net/output-encoding +;output_encoding = + +;;;;;;;;;;;;;;;;;;;;;;;;; +; Paths and Directories ; +;;;;;;;;;;;;;;;;;;;;;;;;; + +; UNIX: "/path1:/path2" +;include_path = ".:/php/includes" +; +; Windows: "\path1;\path2" +;include_path = ".;c:\php\includes" +; +; PHP's default setting for include_path is ".;/path/to/php/pear" +; http://php.net/include-path + +; The root of the PHP pages, used only if nonempty. +; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root +; if you are running php as a CGI under any web server (other than IIS) +; see documentation for security issues. The alternate is to use the +; cgi.force_redirect configuration below +; http://php.net/doc-root +doc_root = + +; The directory under which PHP opens the script using /~username used only +; if nonempty. +; http://php.net/user-dir +user_dir = + +; Directory in which the loadable extensions (modules) reside. +; http://php.net/extension-dir +;extension_dir = "./" +; On windows: +;extension_dir = "ext" + +; Directory where the temporary files should be placed. +; Defaults to the system default (see sys_get_temp_dir) +;sys_temp_dir = "/tmp" + +; Whether or not to enable the dl() function. The dl() function does NOT work +; properly in multithreaded servers, such as IIS or Zeus, and is automatically +; disabled on them. +; http://php.net/enable-dl +enable_dl = Off + +; cgi.force_redirect is necessary to provide security running PHP as a CGI under +; most web servers. Left undefined, PHP turns this on by default. You can +; turn it off here AT YOUR OWN RISK +; **You CAN safely turn this off for IIS, in fact, you MUST.** +; http://php.net/cgi.force-redirect +;cgi.force_redirect = 1 + +; if cgi.nph is enabled it will force cgi to always sent Status: 200 with +; every request. PHP's default behavior is to disable this feature. +;cgi.nph = 1 + +; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape +; (iPlanet) web servers, you MAY need to set an environment variable name that PHP +; will look for to know it is OK to continue execution. Setting this variable MAY +; cause security issues, KNOW WHAT YOU ARE DOING FIRST. +; http://php.net/cgi.redirect-status-env +;cgi.redirect_status_env = + +; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's +; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok +; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting +; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting +; of zero causes PHP to behave as before. Default is 1. You should fix your scripts +; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. +; http://php.net/cgi.fix-pathinfo +;cgi.fix_pathinfo=1 + +; if cgi.discard_path is enabled, the PHP CGI binary can safely be placed outside +; of the web tree and people will not be able to circumvent .htaccess security. +;cgi.discard_path=1 + +; FastCGI under IIS supports the ability to impersonate +; security tokens of the calling client. This allows IIS to define the +; security context that the request runs under. mod_fastcgi under Apache +; does not currently support this feature (03/17/2002) +; Set to 1 if running under IIS. Default is zero. +; http://php.net/fastcgi.impersonate +;fastcgi.impersonate = 1 + +; Disable logging through FastCGI connection. PHP's default behavior is to enable +; this feature. +;fastcgi.logging = 0 + +; cgi.rfc2616_headers configuration option tells PHP what type of headers to +; use when sending HTTP response code. If set to 0, PHP sends Status: header that +; is supported by Apache. When this option is set to 1, PHP will send +; RFC2616 compliant header. +; Default is zero. +; http://php.net/cgi.rfc2616-headers +;cgi.rfc2616_headers = 0 + +; cgi.check_shebang_line controls whether CGI PHP checks for line starting with #! +; (shebang) at the top of the running script. This line might be needed if the +; script support running both as stand-alone script and via PHP CGI<. PHP in CGI +; mode skips this line and ignores its content if this directive is turned on. +; http://php.net/cgi.check-shebang-line +;cgi.check_shebang_line=1 + +;;;;;;;;;;;;;;;; +; File Uploads ; +;;;;;;;;;;;;;;;; + +; Whether to allow HTTP file uploads. +; http://php.net/file-uploads +file_uploads = On + +; Temporary directory for HTTP uploaded files (will use system default if not +; specified). +; http://php.net/upload-tmp-dir +;upload_tmp_dir = + +; Maximum allowed size for uploaded files. +; http://php.net/upload-max-filesize +upload_max_filesize = 2M + +; Maximum number of files that can be uploaded via a single request +max_file_uploads = 20 + +;;;;;;;;;;;;;;;;;; +; Fopen wrappers ; +;;;;;;;;;;;;;;;;;; + +; Whether to allow the treatment of URLs (like http:// or ftp://) as files. +; http://php.net/allow-url-fopen +allow_url_fopen = On + +; Whether to allow include/require to open URLs (like http:// or ftp://) as files. +; http://php.net/allow-url-include +allow_url_include = Off + +; Define the anonymous ftp password (your email address). PHP's default setting +; for this is empty. +; http://php.net/from +;from="john@doe.com" + +; Define the User-Agent string. PHP's default setting for this is empty. +; http://php.net/user-agent +;user_agent="PHP" + +; Default timeout for socket based streams (seconds) +; http://php.net/default-socket-timeout +default_socket_timeout = 60 + +; If your scripts have to deal with files from Macintosh systems, +; or you are running on a Mac and need to deal with files from +; unix or win32 systems, setting this flag will cause PHP to +; automatically detect the EOL character in those files so that +; fgets() and file() will work regardless of the source of the file. +; http://php.net/auto-detect-line-endings +;auto_detect_line_endings = Off + +;;;;;;;;;;;;;;;;;;;;;; +; Dynamic Extensions ; +;;;;;;;;;;;;;;;;;;;;;; + +; If you wish to have an extension loaded automatically, use the following +; syntax: +; +; extension=modulename +; +; For example: +; +; extension=mysqli +; +; When the extension library to load is not located in the default extension +; directory, You may specify an absolute path to the library file: +; +; extension=/path/to/extension/mysqli.so +; +; Note : The syntax used in previous PHP versions ('extension=.so' and +; 'extension='php_.dll') is supported for legacy reasons and may be +; deprecated in a future PHP major version. So, when it is possible, please +; move to the new ('extension=) syntax. +; +; Notes for Windows environments : +; +; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+) +; extension folders as well as the separate PECL DLL download (PHP 5+). +; Be sure to appropriately set the extension_dir directive. +; +;extension=bz2 +;extension=curl +;extension=ffi +;extension=ftp +;extension=fileinfo +;extension=gd +;extension=gettext +;extension=gmp +;extension=intl +;extension=imap +;extension=ldap +;extension=mbstring +;extension=exif ; Must be after mbstring as it depends on it +;extension=mysqli +;extension=oci8_12c ; Use with Oracle Database 12c Instant Client +;extension=oci8_19 ; Use with Oracle Database 19 Instant Client +;extension=odbc +;extension=openssl +;extension=pdo_firebird +;extension=pdo_mysql +;extension=pdo_oci +;extension=pdo_odbc +;extension=pdo_pgsql +;extension=pdo_sqlite +;extension=pgsql +;extension=shmop + +; The MIBS data available in the PHP distribution must be installed. +; See http://www.php.net/manual/en/snmp.installation.php +;extension=snmp + +;extension=soap +;extension=sockets +;extension=sodium +;extension=sqlite3 +;extension=tidy +;extension=xsl + +;zend_extension=opcache + +;;;;;;;;;;;;;;;;;;; +; Module Settings ; +;;;;;;;;;;;;;;;;;;; + +[CLI Server] +; Whether the CLI web server uses ANSI color coding in its terminal output. +cli_server.color = On + +[Date] +; Defines the default timezone used by the date functions +; http://php.net/date.timezone +date.timezone = "Europe/Stockholm" + +; http://php.net/date.default-latitude +;date.default_latitude = 31.7667 + +; http://php.net/date.default-longitude +;date.default_longitude = 35.2333 + +; http://php.net/date.sunrise-zenith +;date.sunrise_zenith = 90.833333 + +; http://php.net/date.sunset-zenith +;date.sunset_zenith = 90.833333 + +[filter] +; http://php.net/filter.default +;filter.default = unsafe_raw + +; http://php.net/filter.default-flags +;filter.default_flags = + +[iconv] +; Use of this INI entry is deprecated, use global input_encoding instead. +; If empty, default_charset or input_encoding or iconv.input_encoding is used. +; The precedence is: default_charset < input_encoding < iconv.input_encoding +;iconv.input_encoding = + +; Use of this INI entry is deprecated, use global internal_encoding instead. +; If empty, default_charset or internal_encoding or iconv.internal_encoding is used. +; The precedence is: default_charset < internal_encoding < iconv.internal_encoding +;iconv.internal_encoding = + +; Use of this INI entry is deprecated, use global output_encoding instead. +; If empty, default_charset or output_encoding or iconv.output_encoding is used. +; The precedence is: default_charset < output_encoding < iconv.output_encoding +; To use an output encoding conversion, iconv's output handler must be set +; otherwise output encoding conversion cannot be performed. +;iconv.output_encoding = + +[imap] +; rsh/ssh logins are disabled by default. Use this INI entry if you want to +; enable them. Note that the IMAP library does not filter mailbox names before +; passing them to rsh/ssh command, thus passing untrusted data to this function +; with rsh/ssh enabled is insecure. +;imap.enable_insecure_rsh=0 + +[intl] +;intl.default_locale = +; This directive allows you to produce PHP errors when some error +; happens within intl functions. The value is the level of the error produced. +; Default is 0, which does not produce any errors. +;intl.error_level = E_WARNING +;intl.use_exceptions = 0 + +[sqlite3] +; Directory pointing to SQLite3 extensions +; http://php.net/sqlite3.extension-dir +;sqlite3.extension_dir = + +; SQLite defensive mode flag (only available from SQLite 3.26+) +; When the defensive flag is enabled, language features that allow ordinary +; SQL to deliberately corrupt the database file are disabled. This forbids +; writing directly to the schema, shadow tables (eg. FTS data tables), or +; the sqlite_dbpage virtual table. +; https://www.sqlite.org/c3ref/c_dbconfig_defensive.html +; (for older SQLite versions, this flag has no use) +;sqlite3.defensive = 1 + +[Pcre] +; PCRE library backtracking limit. +; http://php.net/pcre.backtrack-limit +;pcre.backtrack_limit=100000 + +; PCRE library recursion limit. +; Please note that if you set this value to a high number you may consume all +; the available process stack and eventually crash PHP (due to reaching the +; stack size limit imposed by the Operating System). +; http://php.net/pcre.recursion-limit +;pcre.recursion_limit=100000 + +; Enables or disables JIT compilation of patterns. This requires the PCRE +; library to be compiled with JIT support. +;pcre.jit=1 + +[Pdo] +; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off" +; http://php.net/pdo-odbc.connection-pooling +;pdo_odbc.connection_pooling=strict + +[Pdo_mysql] +; Default socket name for local MySQL connects. If empty, uses the built-in +; MySQL defaults. +pdo_mysql.default_socket= + +[Phar] +; http://php.net/phar.readonly +;phar.readonly = On + +; http://php.net/phar.require-hash +;phar.require_hash = On + +;phar.cache_list = + +[mail function] +; For Win32 only. +; http://php.net/smtp +SMTP = localhost +; http://php.net/smtp-port +smtp_port = 25 + +; For Win32 only. +; http://php.net/sendmail-from +;sendmail_from = me@example.com + +; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). +; http://php.net/sendmail-path +;sendmail_path = + +; Force the addition of the specified parameters to be passed as extra parameters +; to the sendmail binary. These parameters will always replace the value of +; the 5th parameter to mail(). +;mail.force_extra_parameters = + +; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename +mail.add_x_header = Off + +; The path to a log file that will log all mail() calls. Log entries include +; the full path of the script, line number, To address and headers. +;mail.log = +; Log mail to syslog (Event Log on Windows). +;mail.log = syslog + +[ODBC] +; http://php.net/odbc.default-db +;odbc.default_db = Not yet implemented + +; http://php.net/odbc.default-user +;odbc.default_user = Not yet implemented + +; http://php.net/odbc.default-pw +;odbc.default_pw = Not yet implemented + +; Controls the ODBC cursor model. +; Default: SQL_CURSOR_STATIC (default). +;odbc.default_cursortype + +; Allow or prevent persistent links. +; http://php.net/odbc.allow-persistent +odbc.allow_persistent = On + +; Check that a connection is still valid before reuse. +; http://php.net/odbc.check-persistent +odbc.check_persistent = On + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/odbc.max-persistent +odbc.max_persistent = -1 + +; Maximum number of links (persistent + non-persistent). -1 means no limit. +; http://php.net/odbc.max-links +odbc.max_links = -1 + +; Handling of LONG fields. Returns number of bytes to variables. 0 means +; passthru. +; http://php.net/odbc.defaultlrl +odbc.defaultlrl = 4096 + +; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char. +; See the documentation on odbc_binmode and odbc_longreadlen for an explanation +; of odbc.defaultlrl and odbc.defaultbinmode +; http://php.net/odbc.defaultbinmode +odbc.defaultbinmode = 1 + +[MySQLi] + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/mysqli.max-persistent +mysqli.max_persistent = -1 + +; Allow accessing, from PHP's perspective, local files with LOAD DATA statements +; http://php.net/mysqli.allow_local_infile +;mysqli.allow_local_infile = On + +; Allow or prevent persistent links. +; http://php.net/mysqli.allow-persistent +mysqli.allow_persistent = On + +; Maximum number of links. -1 means no limit. +; http://php.net/mysqli.max-links +mysqli.max_links = -1 + +; Default port number for mysqli_connect(). If unset, mysqli_connect() will use +; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the +; compile-time value defined MYSQL_PORT (in that order). Win32 will only look +; at MYSQL_PORT. +; http://php.net/mysqli.default-port +mysqli.default_port = 3306 + +; Default socket name for local MySQL connects. If empty, uses the built-in +; MySQL defaults. +; http://php.net/mysqli.default-socket +mysqli.default_socket = + +; Default host for mysqli_connect() (doesn't apply in safe mode). +; http://php.net/mysqli.default-host +mysqli.default_host = + +; Default user for mysqli_connect() (doesn't apply in safe mode). +; http://php.net/mysqli.default-user +mysqli.default_user = + +; Default password for mysqli_connect() (doesn't apply in safe mode). +; Note that this is generally a *bad* idea to store passwords in this file. +; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw") +; and reveal this password! And of course, any users with read access to this +; file will be able to reveal the password as well. +; http://php.net/mysqli.default-pw +mysqli.default_pw = + +; Allow or prevent reconnect +mysqli.reconnect = Off + +[mysqlnd] +; Enable / Disable collection of general statistics by mysqlnd which can be +; used to tune and monitor MySQL operations. +mysqlnd.collect_statistics = On + +; Enable / Disable collection of memory usage statistics by mysqlnd which can be +; used to tune and monitor MySQL operations. +mysqlnd.collect_memory_statistics = On + +; Records communication from all extensions using mysqlnd to the specified log +; file. +; http://php.net/mysqlnd.debug +;mysqlnd.debug = + +; Defines which queries will be logged. +;mysqlnd.log_mask = 0 + +; Default size of the mysqlnd memory pool, which is used by result sets. +;mysqlnd.mempool_default_size = 16000 + +; Size of a pre-allocated buffer used when sending commands to MySQL in bytes. +;mysqlnd.net_cmd_buffer_size = 2048 + +; Size of a pre-allocated buffer used for reading data sent by the server in +; bytes. +;mysqlnd.net_read_buffer_size = 32768 + +; Timeout for network requests in seconds. +;mysqlnd.net_read_timeout = 31536000 + +; SHA-256 Authentication Plugin related. File with the MySQL server public RSA +; key. +;mysqlnd.sha256_server_public_key = + +[OCI8] + +; Connection: Enables privileged connections using external +; credentials (OCI_SYSOPER, OCI_SYSDBA) +; http://php.net/oci8.privileged-connect +;oci8.privileged_connect = Off + +; Connection: The maximum number of persistent OCI8 connections per +; process. Using -1 means no limit. +; http://php.net/oci8.max-persistent +;oci8.max_persistent = -1 + +; Connection: The maximum number of seconds a process is allowed to +; maintain an idle persistent connection. Using -1 means idle +; persistent connections will be maintained forever. +; http://php.net/oci8.persistent-timeout +;oci8.persistent_timeout = -1 + +; Connection: The number of seconds that must pass before issuing a +; ping during oci_pconnect() to check the connection validity. When +; set to 0, each oci_pconnect() will cause a ping. Using -1 disables +; pings completely. +; http://php.net/oci8.ping-interval +;oci8.ping_interval = 60 + +; Connection: Set this to a user chosen connection class to be used +; for all pooled server requests with Oracle 11g Database Resident +; Connection Pooling (DRCP). To use DRCP, this value should be set to +; the same string for all web servers running the same application, +; the database pool must be configured, and the connection string must +; specify to use a pooled server. +;oci8.connection_class = + +; High Availability: Using On lets PHP receive Fast Application +; Notification (FAN) events generated when a database node fails. The +; database must also be configured to post FAN events. +;oci8.events = Off + +; Tuning: This option enables statement caching, and specifies how +; many statements to cache. Using 0 disables statement caching. +; http://php.net/oci8.statement-cache-size +;oci8.statement_cache_size = 20 + +; Tuning: Enables statement prefetching and sets the default number of +; rows that will be fetched automatically after statement execution. +; http://php.net/oci8.default-prefetch +;oci8.default_prefetch = 100 + +; Compatibility. Using On means oci_close() will not close +; oci_connect() and oci_new_connect() connections. +; http://php.net/oci8.old-oci-close-semantics +;oci8.old_oci_close_semantics = Off + +[PostgreSQL] +; Allow or prevent persistent links. +; http://php.net/pgsql.allow-persistent +pgsql.allow_persistent = On + +; Detect broken persistent links always with pg_pconnect(). +; Auto reset feature requires a little overheads. +; http://php.net/pgsql.auto-reset-persistent +pgsql.auto_reset_persistent = Off + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/pgsql.max-persistent +pgsql.max_persistent = -1 + +; Maximum number of links (persistent+non persistent). -1 means no limit. +; http://php.net/pgsql.max-links +pgsql.max_links = -1 + +; Ignore PostgreSQL backends Notice message or not. +; Notice message logging require a little overheads. +; http://php.net/pgsql.ignore-notice +pgsql.ignore_notice = 0 + +; Log PostgreSQL backends Notice message or not. +; Unless pgsql.ignore_notice=0, module cannot log notice message. +; http://php.net/pgsql.log-notice +pgsql.log_notice = 0 + +[bcmath] +; Number of decimal digits for all bcmath functions. +; http://php.net/bcmath.scale +bcmath.scale = 0 + +[browscap] +; http://php.net/browscap +;browscap = extra/browscap.ini + +[Session] +; Handler used to store/retrieve data. +; http://php.net/session.save-handler +session.save_handler = files + +; Argument passed to save_handler. In the case of files, this is the path +; where data files are stored. Note: Windows users have to change this +; variable in order to use PHP's session functions. +; +; The path can be defined as: +; +; session.save_path = "N;/path" +; +; where N is an integer. Instead of storing all the session files in +; /path, what this will do is use subdirectories N-levels deep, and +; store the session data in those directories. This is useful if +; your OS has problems with many files in one directory, and is +; a more efficient layout for servers that handle many sessions. +; +; NOTE 1: PHP will not create this directory structure automatically. +; You can use the script in the ext/session dir for that purpose. +; NOTE 2: See the section on garbage collection below if you choose to +; use subdirectories for session storage +; +; The file storage module creates files using mode 600 by default. +; You can change that by using +; +; session.save_path = "N;MODE;/path" +; +; where MODE is the octal representation of the mode. Note that this +; does not overwrite the process's umask. +; http://php.net/session.save-path +;session.save_path = "/tmp" + +; Whether to use strict session mode. +; Strict session mode does not accept an uninitialized session ID, and +; regenerates the session ID if the browser sends an uninitialized session ID. +; Strict mode protects applications from session fixation via a session adoption +; vulnerability. It is disabled by default for maximum compatibility, but +; enabling it is encouraged. +; https://wiki.php.net/rfc/strict_sessions +session.use_strict_mode = 0 + +; Whether to use cookies. +; http://php.net/session.use-cookies +session.use_cookies = 1 + +; http://php.net/session.cookie-secure +;session.cookie_secure = + +; This option forces PHP to fetch and use a cookie for storing and maintaining +; the session id. We encourage this operation as it's very helpful in combating +; session hijacking when not specifying and managing your own session id. It is +; not the be-all and end-all of session hijacking defense, but it's a good start. +; http://php.net/session.use-only-cookies +session.use_only_cookies = 1 + +; Name of the session (used as cookie name). +; http://php.net/session.name +session.name = PHPSESSID + +; Initialize session on request startup. +; http://php.net/session.auto-start +session.auto_start = 0 + +; Lifetime in seconds of cookie or, if 0, until browser is restarted. +; http://php.net/session.cookie-lifetime +session.cookie_lifetime = 0 + +; The path for which the cookie is valid. +; http://php.net/session.cookie-path +session.cookie_path = / + +; The domain for which the cookie is valid. +; http://php.net/session.cookie-domain +session.cookie_domain = + +; Whether or not to add the httpOnly flag to the cookie, which makes it +; inaccessible to browser scripting languages such as JavaScript. +; http://php.net/session.cookie-httponly +session.cookie_httponly = + +; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF) +; Current valid values are "Strict", "Lax" or "None". When using "None", +; make sure to include the quotes, as `none` is interpreted like `false` in ini files. +; https://tools.ietf.org/html/draft-west-first-party-cookies-07 +session.cookie_samesite = + +; Handler used to serialize data. php is the standard serializer of PHP. +; http://php.net/session.serialize-handler +session.serialize_handler = php + +; Defines the probability that the 'garbage collection' process is started on every +; session initialization. The probability is calculated by using gc_probability/gc_divisor, +; e.g. 1/100 means there is a 1% chance that the GC process starts on each request. +; Default Value: 1 +; Development Value: 1 +; Production Value: 1 +; http://php.net/session.gc-probability +session.gc_probability = 1 + +; Defines the probability that the 'garbage collection' process is started on every +; session initialization. The probability is calculated by using gc_probability/gc_divisor, +; e.g. 1/100 means there is a 1% chance that the GC process starts on each request. +; For high volume production servers, using a value of 1000 is a more efficient approach. +; Default Value: 100 +; Development Value: 1000 +; Production Value: 1000 +; http://php.net/session.gc-divisor +session.gc_divisor = 1000 + +; After this number of seconds, stored data will be seen as 'garbage' and +; cleaned up by the garbage collection process. +; http://php.net/session.gc-maxlifetime +session.gc_maxlifetime = 1440 + +; NOTE: If you are using the subdirectory option for storing session files +; (see session.save_path above), then garbage collection does *not* +; happen automatically. You will need to do your own garbage +; collection through a shell script, cron entry, or some other method. +; For example, the following script is the equivalent of setting +; session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): +; find /path/to/sessions -cmin +24 -type f | xargs rm + +; Check HTTP Referer to invalidate externally stored URLs containing ids. +; HTTP_REFERER has to contain this substring for the session to be +; considered as valid. +; http://php.net/session.referer-check +session.referer_check = + +; Set to {nocache,private,public,} to determine HTTP caching aspects +; or leave this empty to avoid sending anti-caching headers. +; http://php.net/session.cache-limiter +session.cache_limiter = nocache + +; Document expires after n minutes. +; http://php.net/session.cache-expire +session.cache_expire = 180 + +; trans sid support is disabled by default. +; Use of trans sid may risk your users' security. +; Use this option with caution. +; - User may send URL contains active session ID +; to other person via. email/irc/etc. +; - URL that contains active session ID may be stored +; in publicly accessible computer. +; - User may access your site with the same session ID +; always using URL stored in browser's history or bookmarks. +; http://php.net/session.use-trans-sid +session.use_trans_sid = 0 + +; Set session ID character length. This value could be between 22 to 256. +; Shorter length than default is supported only for compatibility reason. +; Users should use 32 or more chars. +; http://php.net/session.sid-length +; Default Value: 32 +; Development Value: 26 +; Production Value: 26 +session.sid_length = 26 + +; The URL rewriter will look for URLs in a defined set of HTML tags. +;
is special; if you include them here, the rewriter will +; add a hidden field with the info which is otherwise appended +; to URLs. tag's action attribute URL will not be modified +; unless it is specified. +; Note that all valid entries require a "=", even if no value follows. +; Default Value: "a=href,area=href,frame=src,form=" +; Development Value: "a=href,area=href,frame=src,form=" +; Production Value: "a=href,area=href,frame=src,form=" +; http://php.net/url-rewriter.tags +session.trans_sid_tags = "a=href,area=href,frame=src,form=" + +; URL rewriter does not rewrite absolute URLs by default. +; To enable rewrites for absolute paths, target hosts must be specified +; at RUNTIME. i.e. use ini_set() +; tags is special. PHP will check action attribute's URL regardless +; of session.trans_sid_tags setting. +; If no host is defined, HTTP_HOST will be used for allowed host. +; Example value: php.net,www.php.net,wiki.php.net +; Use "," for multiple hosts. No spaces are allowed. +; Default Value: "" +; Development Value: "" +; Production Value: "" +;session.trans_sid_hosts="" + +; Define how many bits are stored in each character when converting +; the binary hash data to something readable. +; Possible values: +; 4 (4 bits: 0-9, a-f) +; 5 (5 bits: 0-9, a-v) +; 6 (6 bits: 0-9, a-z, A-Z, "-", ",") +; Default Value: 4 +; Development Value: 5 +; Production Value: 5 +; http://php.net/session.hash-bits-per-character +session.sid_bits_per_character = 5 + +; Enable upload progress tracking in $_SESSION +; Default Value: On +; Development Value: On +; Production Value: On +; http://php.net/session.upload-progress.enabled +;session.upload_progress.enabled = On + +; Cleanup the progress information as soon as all POST data has been read +; (i.e. upload completed). +; Default Value: On +; Development Value: On +; Production Value: On +; http://php.net/session.upload-progress.cleanup +;session.upload_progress.cleanup = On + +; A prefix used for the upload progress key in $_SESSION +; Default Value: "upload_progress_" +; Development Value: "upload_progress_" +; Production Value: "upload_progress_" +; http://php.net/session.upload-progress.prefix +;session.upload_progress.prefix = "upload_progress_" + +; The index name (concatenated with the prefix) in $_SESSION +; containing the upload progress information +; Default Value: "PHP_SESSION_UPLOAD_PROGRESS" +; Development Value: "PHP_SESSION_UPLOAD_PROGRESS" +; Production Value: "PHP_SESSION_UPLOAD_PROGRESS" +; http://php.net/session.upload-progress.name +;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS" + +; How frequently the upload progress should be updated. +; Given either in percentages (per-file), or in bytes +; Default Value: "1%" +; Development Value: "1%" +; Production Value: "1%" +; http://php.net/session.upload-progress.freq +;session.upload_progress.freq = "1%" + +; The minimum delay between updates, in seconds +; Default Value: 1 +; Development Value: 1 +; Production Value: 1 +; http://php.net/session.upload-progress.min-freq +;session.upload_progress.min_freq = "1" + +; Only write session data when session data is changed. Enabled by default. +; http://php.net/session.lazy-write +;session.lazy_write = On + +[Assertion] +; Switch whether to compile assertions at all (to have no overhead at run-time) +; -1: Do not compile at all +; 0: Jump over assertion at run-time +; 1: Execute assertions +; Changing from or to a negative value is only possible in php.ini! (For turning assertions on and off at run-time, see assert.active, when zend.assertions = 1) +; Default Value: 1 +; Development Value: 1 +; Production Value: -1 +; http://php.net/zend.assertions +zend.assertions = 1 + +; Assert(expr); active by default. +; http://php.net/assert.active +;assert.active = On + +; Throw an AssertionError on failed assertions +; http://php.net/assert.exception +;assert.exception = On + +; Issue a PHP warning for each failed assertion. (Overridden by assert.exception if active) +; http://php.net/assert.warning +;assert.warning = On + +; Don't bail out by default. +; http://php.net/assert.bail +;assert.bail = Off + +; User-function to be called if an assertion fails. +; http://php.net/assert.callback +;assert.callback = 0 + +[COM] +; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs +; http://php.net/com.typelib-file +;com.typelib_file = + +; allow Distributed-COM calls +; http://php.net/com.allow-dcom +;com.allow_dcom = true + +; autoregister constants of a component's typlib on com_load() +; http://php.net/com.autoregister-typelib +;com.autoregister_typelib = true + +; register constants casesensitive +; http://php.net/com.autoregister-casesensitive +;com.autoregister_casesensitive = false + +; show warnings on duplicate constant registrations +; http://php.net/com.autoregister-verbose +;com.autoregister_verbose = true + +; The default character set code-page to use when passing strings to and from COM objects. +; Default: system ANSI code page +;com.code_page= + +; The version of the .NET framework to use. The value of the setting are the first three parts +; of the framework's version number, separated by dots, and prefixed with "v", e.g. "v4.0.30319". +;com.dotnet_version= + +[mbstring] +; language for internal character representation. +; This affects mb_send_mail() and mbstring.detect_order. +; http://php.net/mbstring.language +;mbstring.language = Japanese + +; Use of this INI entry is deprecated, use global internal_encoding instead. +; internal/script encoding. +; Some encoding cannot work as internal encoding. (e.g. SJIS, BIG5, ISO-2022-*) +; If empty, default_charset or internal_encoding or iconv.internal_encoding is used. +; The precedence is: default_charset < internal_encoding < iconv.internal_encoding +;mbstring.internal_encoding = + +; Use of this INI entry is deprecated, use global input_encoding instead. +; http input encoding. +; mbstring.encoding_translation = On is needed to use this setting. +; If empty, default_charset or input_encoding or mbstring.input is used. +; The precedence is: default_charset < input_encoding < mbstring.http_input +; http://php.net/mbstring.http-input +;mbstring.http_input = + +; Use of this INI entry is deprecated, use global output_encoding instead. +; http output encoding. +; mb_output_handler must be registered as output buffer to function. +; If empty, default_charset or output_encoding or mbstring.http_output is used. +; The precedence is: default_charset < output_encoding < mbstring.http_output +; To use an output encoding conversion, mbstring's output handler must be set +; otherwise output encoding conversion cannot be performed. +; http://php.net/mbstring.http-output +;mbstring.http_output = + +; enable automatic encoding translation according to +; mbstring.internal_encoding setting. Input chars are +; converted to internal encoding by setting this to On. +; Note: Do _not_ use automatic encoding translation for +; portable libs/applications. +; http://php.net/mbstring.encoding-translation +;mbstring.encoding_translation = Off + +; automatic encoding detection order. +; "auto" detect order is changed according to mbstring.language +; http://php.net/mbstring.detect-order +;mbstring.detect_order = auto + +; substitute_character used when character cannot be converted +; one from another +; http://php.net/mbstring.substitute-character +;mbstring.substitute_character = none + +; Enable strict encoding detection. +;mbstring.strict_detection = Off + +; This directive specifies the regex pattern of content types for which mb_output_handler() +; is activated. +; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml) +;mbstring.http_output_conv_mimetype= + +; This directive specifies maximum stack depth for mbstring regular expressions. It is similar +; to the pcre.recursion_limit for PCRE. +;mbstring.regex_stack_limit=100000 + +; This directive specifies maximum retry count for mbstring regular expressions. It is similar +; to the pcre.backtrack_limit for PCRE. +;mbstring.regex_retry_limit=1000000 + +[gd] +; Tell the jpeg decode to ignore warnings and try to create +; a gd image. The warning will then be displayed as notices +; disabled by default +; http://php.net/gd.jpeg-ignore-warning +;gd.jpeg_ignore_warning = 1 + +[exif] +; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. +; With mbstring support this will automatically be converted into the encoding +; given by corresponding encode setting. When empty mbstring.internal_encoding +; is used. For the decode settings you can distinguish between motorola and +; intel byte order. A decode setting cannot be empty. +; http://php.net/exif.encode-unicode +;exif.encode_unicode = ISO-8859-15 + +; http://php.net/exif.decode-unicode-motorola +;exif.decode_unicode_motorola = UCS-2BE + +; http://php.net/exif.decode-unicode-intel +;exif.decode_unicode_intel = UCS-2LE + +; http://php.net/exif.encode-jis +;exif.encode_jis = + +; http://php.net/exif.decode-jis-motorola +;exif.decode_jis_motorola = JIS + +; http://php.net/exif.decode-jis-intel +;exif.decode_jis_intel = JIS + +[Tidy] +; The path to a default tidy configuration file to use when using tidy +; http://php.net/tidy.default-config +;tidy.default_config = /usr/local/lib/php/default.tcfg + +; Should tidy clean and repair output automatically? +; WARNING: Do not use this option if you are generating non-html content +; such as dynamic images +; http://php.net/tidy.clean-output +tidy.clean_output = Off + +[soap] +; Enables or disables WSDL caching feature. +; http://php.net/soap.wsdl-cache-enabled +soap.wsdl_cache_enabled=1 + +; Sets the directory name where SOAP extension will put cache files. +; http://php.net/soap.wsdl-cache-dir +soap.wsdl_cache_dir="/tmp" + +; (time to live) Sets the number of second while cached file will be used +; instead of original one. +; http://php.net/soap.wsdl-cache-ttl +soap.wsdl_cache_ttl=86400 + +; Sets the size of the cache limit. (Max. number of WSDL files to cache) +soap.wsdl_cache_limit = 5 + +[sysvshm] +; A default size of the shared memory segment +;sysvshm.init_mem = 10000 + +[ldap] +; Sets the maximum number of open links or -1 for unlimited. +ldap.max_links = -1 + +[dba] +;dba.default_handler= + +[opcache] +; Determines if Zend OPCache is enabled +;opcache.enable=1 + +; Determines if Zend OPCache is enabled for the CLI version of PHP +;opcache.enable_cli=0 + +; The OPcache shared memory storage size. +;opcache.memory_consumption=128 + +; The amount of memory for interned strings in Mbytes. +;opcache.interned_strings_buffer=8 + +; The maximum number of keys (scripts) in the OPcache hash table. +; Only numbers between 200 and 1000000 are allowed. +;opcache.max_accelerated_files=10000 + +; The maximum percentage of "wasted" memory until a restart is scheduled. +;opcache.max_wasted_percentage=5 + +; When this directive is enabled, the OPcache appends the current working +; directory to the script key, thus eliminating possible collisions between +; files with the same name (basename). Disabling the directive improves +; performance, but may break existing applications. +;opcache.use_cwd=1 + +; When disabled, you must reset the OPcache manually or restart the +; webserver for changes to the filesystem to take effect. +;opcache.validate_timestamps=1 + +; How often (in seconds) to check file timestamps for changes to the shared +; memory storage allocation. ("1" means validate once per second, but only +; once per request. "0" means always validate) +;opcache.revalidate_freq=2 + +; Enables or disables file search in include_path optimization +;opcache.revalidate_path=0 + +; If disabled, all PHPDoc comments are dropped from the code to reduce the +; size of the optimized code. +;opcache.save_comments=1 + +; If enabled, compilation warnings (including notices and deprecations) will +; be recorded and replayed each time a file is included. Otherwise, compilation +; warnings will only be emitted when the file is first cached. +;opcache.record_warnings=0 + +; Allow file existence override (file_exists, etc.) performance feature. +;opcache.enable_file_override=0 + +; A bitmask, where each bit enables or disables the appropriate OPcache +; passes +;opcache.optimization_level=0x7FFFBFFF + +;opcache.dups_fix=0 + +; The location of the OPcache blacklist file (wildcards allowed). +; Each OPcache blacklist file is a text file that holds the names of files +; that should not be accelerated. The file format is to add each filename +; to a new line. The filename may be a full path or just a file prefix +; (i.e., /var/www/x blacklists all the files and directories in /var/www +; that start with 'x'). Line starting with a ; are ignored (comments). +;opcache.blacklist_filename= + +; Allows exclusion of large files from being cached. By default all files +; are cached. +;opcache.max_file_size=0 + +; Check the cache checksum each N requests. +; The default value of "0" means that the checks are disabled. +;opcache.consistency_checks=0 + +; How long to wait (in seconds) for a scheduled restart to begin if the cache +; is not being accessed. +;opcache.force_restart_timeout=180 + +; OPcache error_log file name. Empty string assumes "stderr". +;opcache.error_log= + +; All OPcache errors go to the Web server log. +; By default, only fatal errors (level 0) or errors (level 1) are logged. +; You can also enable warnings (level 2), info messages (level 3) or +; debug messages (level 4). +;opcache.log_verbosity_level=1 + +; Preferred Shared Memory back-end. Leave empty and let the system decide. +;opcache.preferred_memory_model= + +; Protect the shared memory from unexpected writing during script execution. +; Useful for internal debugging only. +;opcache.protect_memory=0 + +; Allows calling OPcache API functions only from PHP scripts which path is +; started from specified string. The default "" means no restriction +;opcache.restrict_api= + +; Mapping base of shared memory segments (for Windows only). All the PHP +; processes have to map shared memory into the same address space. This +; directive allows to manually fix the "Unable to reattach to base address" +; errors. +;opcache.mmap_base= + +; Facilitates multiple OPcache instances per user (for Windows only). All PHP +; processes with the same cache ID and user share an OPcache instance. +;opcache.cache_id= + +; Enables and sets the second level cache directory. +; It should improve performance when SHM memory is full, at server restart or +; SHM reset. The default "" disables file based caching. +;opcache.file_cache= + +; Enables or disables opcode caching in shared memory. +;opcache.file_cache_only=0 + +; Enables or disables checksum validation when script loaded from file cache. +;opcache.file_cache_consistency_checks=1 + +; Implies opcache.file_cache_only=1 for a certain process that failed to +; reattach to the shared memory (for Windows only). Explicitly enabled file +; cache is required. +;opcache.file_cache_fallback=1 + +; Enables or disables copying of PHP code (text segment) into HUGE PAGES. +; This should improve performance, but requires appropriate OS configuration. +;opcache.huge_code_pages=0 + +; Validate cached file permissions. +;opcache.validate_permission=0 + +; Prevent name collisions in chroot'ed environment. +;opcache.validate_root=0 + +; If specified, it produces opcode dumps for debugging different stages of +; optimizations. +;opcache.opt_debug_level=0 + +; Specifies a PHP script that is going to be compiled and executed at server +; start-up. +; http://php.net/opcache.preload +;opcache.preload= + +; Preloading code as root is not allowed for security reasons. This directive +; facilitates to let the preloading to be run as another user. +; http://php.net/opcache.preload_user +;opcache.preload_user= + +; Prevents caching files that are less than this number of seconds old. It +; protects from caching of incompletely updated files. In case all file updates +; on your site are atomic, you may increase performance by setting it to "0". +;opcache.file_update_protection=2 + +; Absolute path used to store shared lockfiles (for *nix only). +;opcache.lockfile_path=/tmp + +[curl] +; A default value for the CURLOPT_CAINFO option. This is required to be an +; absolute path. +;curl.cainfo = + +[openssl] +; The location of a Certificate Authority (CA) file on the local filesystem +; to use when verifying the identity of SSL/TLS peers. Most users should +; not specify a value for this directive as PHP will attempt to use the +; OS-managed cert stores in its absence. If specified, this value may still +; be overridden on a per-stream basis via the "cafile" SSL stream context +; option. +;openssl.cafile= + +; If openssl.cafile is not specified or if the CA file is not found, the +; directory pointed to by openssl.capath is searched for a suitable +; certificate. This value must be a correctly hashed certificate directory. +; Most users should not specify a value for this directive as PHP will +; attempt to use the OS-managed cert stores in its absence. If specified, +; this value may still be overridden on a per-stream basis via the "capath" +; SSL stream context option. +;openssl.capath= + +[ffi] +; FFI API restriction. Possible values: +; "preload" - enabled in CLI scripts and preloaded files (default) +; "false" - always disabled +; "true" - always enabled +;ffi.enable=preload + +; List of headers files to preload, wildcard patterns allowed. +;ffi.preload= diff --git a/db/.gitkeep b/db/.gitkeep new file mode 100644 index 0000000..42edbdb --- /dev/null +++ b/db/.gitkeep @@ -0,0 +1 @@ +# to keep dir db diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..8ca38b5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,47 @@ +services: + + nginx: + image: nginx:latest + container_name: nginx + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./www/public:/var/www/public + - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf + - ./config/ssl:/etc/ssl + depends_on: + - php + + php: + build: ./docker/php + container_name: php + volumes: + - ./www:/var/www + - ./config/php/php.ini:/usr/local/etc/php/php.ini + + mariadb: + image: mariadb:latest + container_name: mariadb + restart: always + volumes: + - ./db:/var/lib/mysql + - ./config/mysql/my.cnf:/etc/mysql/my.cnf + environment: + - MYSQL_ROOT_PASSWORD=12345 + - MYSQL_DATABASE=db + - MYSQL_USER=pma + - MYSQL_PASSWORD=12345 + + phpmyadmin: + image: phpmyadmin/phpmyadmin:latest + container_name: pma + restart: always + environment: + PMA_HOST: mariadb + #PMA_ABSOLUTE_URI: http://localhost/pma/ + ports: + - 8080:80 + depends_on: + - mariadb diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile new file mode 100644 index 0000000..1d06ff3 --- /dev/null +++ b/docker/php/Dockerfile @@ -0,0 +1,48 @@ +FROM php:fpm + +WORKDIR /var/www + +RUN apt-get --allow-releaseinfo-change update && apt-get upgrade -y \ + && apt-get install -y \ + g++ \ + libbz2-dev \ + libc-client-dev \ + libcurl4-gnutls-dev \ + libedit-dev \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libkrb5-dev \ + libmcrypt-dev \ + libpng-dev \ + libsqlite3-dev \ + libzip-dev \ + wget \ + unzip \ + zlib1g-dev \ + && docker-php-ext-install -j$(nproc) \ + mysqli \ + pdo_mysql \ + sockets \ + && docker-php-ext-configure gd --with-freetype --with-jpeg \ + && docker-php-ext-install -j$(nproc) gd \ + && docker-php-ext-configure zip \ + && docker-php-ext-install zip \ + && docker-php-source delete \ + && apt-get remove -y g++ wget \ + && apt-get autoremove --purge -y && apt-get autoclean -y && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* \ + && rm -rf /tmp/* /var/tmp/* + +# Add user +RUN groupadd -g 1000 www +RUN useradd -u 1000 -ms /bin/bash -g www www + +# Copy existing application directory contents +COPY ./ /var/www + +# Copy existing application directory permissions +COPY --chown=www:www ./ /var/www + +# Change current user to www +USER www \ No newline at end of file diff --git a/www/public/M0/01/evaluate.php b/www/public/M0/01/evaluate.php new file mode 100644 index 0000000..f86062a --- /dev/null +++ b/www/public/M0/01/evaluate.php @@ -0,0 +1,34 @@ + + + + +

Matematiktest

+

Resultat

+Du fick " . $points . " av 5 möjliga

"); + echo("

Ans01: " . $ans1 . "; ans02: " . $ans2); + +?> + + +

+ + \ No newline at end of file diff --git a/www/public/M0/01/index.html b/www/public/M0/01/index.html new file mode 100644 index 0000000..395a266 --- /dev/null +++ b/www/public/M0/01/index.html @@ -0,0 +1,28 @@ + + + + +

Matematik-test

+
+
+ Frågor + + +
+ + +
+ + +
+ + +
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/www/public/M0/02/evaluate.php b/www/public/M0/02/evaluate.php new file mode 100644 index 0000000..798b54f --- /dev/null +++ b/www/public/M0/02/evaluate.php @@ -0,0 +1,34 @@ + + + + +

Matematiktest

+

Resultat

+" . $name . " fick " . $points . " av 5 möjliga poäng

"); + +?> +
+ +
+ + \ No newline at end of file diff --git a/www/public/M0/02/index.html b/www/public/M0/02/index.html new file mode 100644 index 0000000..cab8685 --- /dev/null +++ b/www/public/M0/02/index.html @@ -0,0 +1,30 @@ + + + + +

Matematik-test

+
+
+ Name + + Frågor + + +
+ + +
+ + +
+ + +
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/www/public/M0/03/css/gridCSS.css b/www/public/M0/03/css/gridCSS.css new file mode 100644 index 0000000..063dc00 --- /dev/null +++ b/www/public/M0/03/css/gridCSS.css @@ -0,0 +1,85 @@ +main{ + display: grid; + grid-template-columns: repeat(6, 1fr); + grid-auto-rows: minmax(100px, 1fr); + gap: 1rem; + grid-auto-flow: dense; +} + +/* MOBILE */ +.col-1 {grid-column: span 1;} +.col-2 {grid-column: span 2;} +.col-3 {grid-column: span 3;} +.col-4 {grid-column: span 4;} +.col-5 {grid-column: span 5;} +.col-6 {grid-column: span 6;} + +.row-2{grid-row: span 2;} +.row-3{grid-row: span 3;} +.row-4{grid-row: span 4;} +.row-5{grid-row: span 5;} + + +main section { + grid-column: span 6; /* Default för mobil. Upptar hela bredden. */ + padding: 0.5rem; + } + + +/** Tablets */ +@media (min-width: 768px) { + [class*='col-t-'] { /* Reset av row-span*/ + grid-row: span 1; + } + + .col-t-1 {grid-column: span 1;} + .col-t-2 {grid-column: span 2;} + .col-t-3 {grid-column: span 3;} + .col-t-4 {grid-column: span 4;} + .col-t-5 {grid-column: span 5;} + .col-t-6 {grid-column: span 6;} + + .row-t-2{grid-row: span 2;} + .row-t-3{grid-row: span 3;} + .row-t-4{grid-row: span 4;} + .row-t-5{grid-row: span 5;} +} + +/** desktop */ +@media (min-width: 980px) { + [class*='col-d-'] { /* Reset av row-span*/ + grid-row: span 1; + } + + .col-d-1 {grid-column: span 1;} + .col-d-2 {grid-column: span 2;} + .col-d-3 {grid-column: span 3;} + .col-d-4 {grid-column: span 4;} + .col-d-5 {grid-column: span 5;} + .col-d-6 {grid-column: span 6;} + + .row-d-2{grid-row: span 2;} + .row-d-3{grid-row: span 3;} + .row-d-4{grid-row: span 4;} + .row-d-5{grid-row: span 5;} +} + + +/** Large desktop */ +@media (min-width: 1200px) { + [class*='col-w-'] { /* Reset av row-span*/ + grid-row: span 1; + } + + .col-w-1 {grid-column: span 1;} + .col-w-2 {grid-column: span 2;} + .col-w-3 {grid-column: span 3;} + .col-w-4 {grid-column: span 4;} + .col-w-5 {grid-column: span 5;} + .col-w-6 {grid-column: span 6;} + + .row-w-2{grid-row: span 2;} + .row-w-3{grid-row: span 3;} + .row-w-4{grid-row: span 4;} + .row-w-5{grid-row: span 5;} +} \ No newline at end of file diff --git a/www/public/M0/03/css/styleSheet.css b/www/public/M0/03/css/styleSheet.css new file mode 100644 index 0000000..a7ce418 --- /dev/null +++ b/www/public/M0/03/css/styleSheet.css @@ -0,0 +1,171 @@ +* { + box-sizing: border-box; + margin: 0; padding: 0; +} + +html { + font-size: 62.5% +} + +body{ + font-size: 1.4rem; + font-family: Arial, Verdana, sans-serif; + margin:auto; +} + +header { + background-color: black; + padding: 1rem; + position: relative; + margin-bottom: 0.7rem; +} + +header h1 { + font-size: 2.6rem; + font-weight: normal; + margin-bottom: 0.3rem; + color: white; +} + +header h2 { + font-size: 1.4rem; + color: grey; + margin-left: 1.4rem; + margin-bottom: 0.5rem; +} + +nav { + background-color: black; + position: absolute; + top: 1rem; + right: 1rem; +} + +#topMenuButton{ + float: right; + padding: 0.5rem 0.8rem 0.5rem 0.8rem; + text-decoration: none; + color: white; + border: 0.1rem solid grey; + border-radius: 0.4rem; +} + +a:hover#topMenuButton{ + background-color: grey; +} + +nav ul, nav:active ul { + display: none; +} + +nav:hover ul { + display: inline-block; +} + +nav ul li{ + display: block; + list-style-type: none; + color: white; + padding: 1rem; +} +nav ul li a { + display: block; + color: white; + padding: 0.5rem; + text-decoration: none; +} +nav ul li a:hover { + background-color: grey; +} + + +section h2{ + font-size: 2rem; + font-weight: normal; + margin-bottom: 0.5rem; + +} + +section p{ + margin-bottom: 0.5rem; +} + +img.right { + float:right; + margin-right: 2rem; + width: 230px; +} + +section.green{ + background-color: #5cb85c; + border: 0.1rem solid green; +} +section.red{ + background-color: #d9534f; + border: 0.1rem solid red; +} +section.blue{ + background-color: #428bca; + border: 0.1rem solid blue; +} +section.yellow{ + background-color: #f6ec50; + border: 0.1rem solid olive; +} + +section.silver{ + background-color: silver; + border: 0.1rem solid grey; +} +section.orange{ + background-color: #f0ad4e; + border: 0.1rem solid orange; +} + +footer { + background-color: black; + padding: 1rem; + margin-top: 0.7rem; + color: white; + min-height: 5rem; +} + + +/** Tablets */ +@media (min-width: 768px) { + #topMenuButton { + display: none; + } + + nav { + position: static; + } + + nav ul, nav:active ul { + display:block; + padding-left: 1rem; + } + + nav ul li { + display: inline-block; + padding-left: 0; + } + + nav ul li a { + border: 0.1rem solid grey; + } + + nav ul li a:hover { + background-color: grey + } +} + +/** desktop */ +@media (min-width: 980px){ + +} + +/** Large desktop */ +@media (min-width: 1200px){ + +} diff --git a/www/public/M0/03/img/htmlcss.png b/www/public/M0/03/img/htmlcss.png new file mode 100644 index 0000000000000000000000000000000000000000..3257b2b860d959e426e23260e646f6cab2af2692 GIT binary patch literal 120714 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 literal 0 HcmV?d00001 diff --git a/www/public/M0/03/inc/footer.html b/www/public/M0/03/inc/footer.html new file mode 100644 index 0000000..bcbc899 --- /dev/null +++ b/www/public/M0/03/inc/footer.html @@ -0,0 +1,3 @@ +

+

Webbutveckling 11,CSS

+
\ No newline at end of file diff --git a/www/public/M0/03/inc/header.html b/www/public/M0/03/inc/header.html new file mode 100644 index 0000000..6389423 --- /dev/null +++ b/www/public/M0/03/inc/header.html @@ -0,0 +1,16 @@ +
+

Webbutveckling 11

+

- Responsiv Webbdesign

+
+
\ No newline at end of file diff --git a/www/public/M0/03/index.php b/www/public/M0/03/index.php new file mode 100644 index 0000000..8a6b07a --- /dev/null +++ b/www/public/M0/03/index.php @@ -0,0 +1,51 @@ + + + + + + Responsiv webbdesign + + + + + +
+
+

Lär dig webbutveckling på ett enkelt sätt

+

Denna webbplats är tänkt som en resurs till kursen Webbutveckling 1. + Tanken är att alla bidrar med sina kunskaper och erfarenheter. +

+
+ +
+

Responsiv Webbdesign

+

Denna webbplats är tänkt som en resurs till kursen Webbutveckling 1.

+

Tanken är att alla bidrar med sina kunskaper och erfarenheter.

+ Logga +
+ +
+

HTML

+

Lär dig grundernai html på endast 55 minuter!

+
+ +
+

CSS

+

CSS på 2 x 60 minuter!

+

Vi går igenom de vanligaste css-reglerna för att sedan fördjupa oss i animation med css.

+
+ +
+

Mobile First

+

Gör din webbplats tillgänglig för alla med fokus på mobilaenheter.

+
+ +
+

Desktop First

+

Gör din webbplats tillgänglig för alla med fokus på stora högupplösta skärmar.

+
+
+ + + + diff --git a/www/public/M1/index.php b/www/public/M1/index.php new file mode 100644 index 0000000..b9a9698 --- /dev/null +++ b/www/public/M1/index.php @@ -0,0 +1,11 @@ + + + + + + M1-test + + + + + \ No newline at end of file diff --git a/www/public/index.php b/www/public/index.php new file mode 100644 index 0000000..785d629 --- /dev/null +++ b/www/public/index.php @@ -0,0 +1,14 @@ + + + + + + WebServ + + +

Webbservern fungerar!

+ This is index. Try Mx " + ?> + +