├── .gitignore ├── Dockerfile ├── Dockerfile.testing ├── LICENSE ├── README.md ├── app.yaml ├── docker-compose.testing.yml ├── docker-compose.yml ├── nginx.conf ├── php.ini ├── schedule.sh └── supervisord.conf /.gitignore: -------------------------------------------------------------------------------- 1 | .idea -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gcr.io/google-appengine/php72:latest 2 | 3 | ARG COMPOSER_FLAGS='--prefer-dist --ignore-platform-reqs --optimize-autoloader' 4 | ENV COMPOSER_FLAGS=${COMPOSER_FLAGS} 5 | ENV SWOOLE_VERSION=4.3.4 6 | ENV DOCUMENT_ROOT=/app/public 7 | 8 | COPY . $APP_DIR 9 | 10 | RUN apt-get update -y \ 11 | && apt-get install -y \ 12 | unzip \ 13 | autoconf \ 14 | build-essential \ 15 | libmpdec-dev \ 16 | libpq-dev \ 17 | && pecl install decimal \ 18 | && curl -o /tmp/swoole.tar.gz https://github.com/swoole/swoole-src/archive/v$SWOOLE_VERSION.tar.gz -L \ 19 | && tar zxvf /tmp/swoole.tar.gz \ 20 | && cd swoole-src* \ 21 | && phpize \ 22 | && ./configure \ 23 | --enable-coroutine \ 24 | --enable-async-redis \ 25 | --enable-coroutine-postgresql \ 26 | && make \ 27 | && make install \ 28 | && chown -R www-data.www-data $APP_DIR \ 29 | && /build-scripts/composer.sh; 30 | 31 | ENTRYPOINT ["/build-scripts/entrypoint.sh"] 32 | CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"] 33 | 34 | EXPOSE 8080 35 | -------------------------------------------------------------------------------- /Dockerfile.testing: -------------------------------------------------------------------------------- 1 | FROM gcr.io/google-appengine/php72:latest 2 | 3 | ARG COMPOSER_FLAGS='--prefer-dist --ignore-platform-reqs --optimize-autoloader' 4 | ENV COMPOSER_FLAGS=${COMPOSER_FLAGS} 5 | ENV SWOOLE_VERSION=4.3.4 6 | ENV DOCUMENT_ROOT=/app/public 7 | 8 | COPY . $APP_DIR 9 | 10 | RUN apt-get update -y \ 11 | && apt-get install -y \ 12 | unzip \ 13 | autoconf \ 14 | build-essential \ 15 | libmpdec-dev \ 16 | libpq-dev \ 17 | && pecl install decimal \ 18 | && curl -o /tmp/swoole.tar.gz https://github.com/swoole/swoole-src/archive/v$SWOOLE_VERSION.tar.gz -L \ 19 | && tar zxvf /tmp/swoole.tar.gz \ 20 | && cd swoole-src* \ 21 | && phpize \ 22 | && ./configure \ 23 | --enable-coroutine \ 24 | --enable-async-redis \ 25 | --enable-coroutine-postgresql \ 26 | && make \ 27 | && make install \ 28 | && chown -R www-data.www-data $APP_DIR \ 29 | && /build-scripts/composer.sh; 30 | 31 | ENTRYPOINT ["/build-scripts/entrypoint.sh"] 32 | CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"] 33 | 34 | # Option to install xdebug 35 | RUN pecl install xdebug \ 36 | && echo "zend_extension=/opt/php72/lib/x86_64-linux-gnu/extensions/no-debug-non-zts-20170718/xdebug.so" >> /opt/php72/lib/php.ini; 37 | 38 | EXPOSE 8080 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Bruno Tomé 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Laravel dockerized with official Google App Engine flexible php environment + swoole (ready for production). 2 | 3 | ## Repo archived on 2021-06-04 4 | 5 | I've been using Kubernetes for almost two years now and I don't see any reason for anyone to use GAE, it's much more expensive and doesn't give any advantage over GKE, in fact, it has many disadvantages. Also, there is no more reason to use this third packages for swoole since it's now available as an oficcial package Octane. 6 | 7 | --- 8 | 9 | You can build this image for production on GAE flexible using auto managed redis (Memory Store service) and database (SQL service) by Google Cloud Plataform building from Dockerfile, or run all locally using the docker-compose file. 10 | 11 | ## Tips to customization 12 | 13 | With this container you can edit `php.ini`, `nginx.conf`, `fastcgi_params`, `gzip_params`, `supervisord.conf` and `php-fpm.conf` files, just add them to the root folder and make your changes, they will be used on the next `docker-compose up --build` or on your next deploy to GAE using `gcloud app deploy`. All the original files related can be found [here](https://github.com/GoogleCloudPlatform/php-docker/tree/master/php-base). 14 | 15 | The `supervisord.conf` file is ready to run the swoole server and horizon at the start, and the `php artisan schedule:run` command each minute. 16 | 17 | ## Example of repo using this container 18 | 19 | https://github.com/ibrunotome/laravel-api-templates 20 | 21 | The above repo use the swooletw/laravel-swoole package. Just choose one of the structures (default delivered by Laravel, or a structure inspired in DDD), and run `docker-compose up`. It's up and running :) 22 | 23 | ## Swoole 24 | 25 | I did some edits in Dockerfile, extending the official image (gcr.io/google-appengine/php72:latest) to enable swoole extension to get better performance (almost 400 reqs/sec on a real laravel world application with database/redis, etc) and 3000 reqs/sec with nginx micro cache. If you wanna use swoole with laravel, you can install one of the following packages: 26 | 27 | #### swooletw/laravel-swoole 28 | 29 | This package offers an easy plug and play of swoole into your Laravel application. 30 | 31 | https://github.com/swooletw/laravel-swoole 32 | 33 | After that, you have published the package configs and set the port on `swoole_http.php` file to match with the port that you are listening on your upstream of `nginx.conf` file (the current port is `9000`), and set start the server on `supervisord.conf`, you just need to start your server and the nginx acts as a reverse proxy to your swoole server. 34 | 35 | #### hhxsv5/laravel-s 36 | 37 | If you want to put your hands in many of the truly skills of swoole (goroutines, asyncronous tasks/events, millisecond cron jobs), you can install the following package. 38 | 39 | https://github.com/hhxsv5/laravel-s 40 | 41 | ## FPM 42 | 43 | If you wanna use php-fpm instead of swoole extension (seriously, WHY?), so remove swoole extension from `php.ini` and the swoole program from `supervisord.conf`, uncomment the php-fpm program of `supervisord.conf` file and remove the related lines of swoole from `Dockerfile`. 44 | 45 | ## F.A.Q 46 | 47 | - **Can I use this image with pure php or other frameworks instead of Laravel?** *Sure* 48 | 49 | ## How to use it locally 50 | 51 | - You need to have docker and docker-compose installed. 52 | - Put the files of this repo in the root of your laravel project. 53 | - Configure your .env to point to the docker-compose services (like `pgsql` for db host, or `redis-cache` for redis host) 54 | - Run ```docker-compose run app bash -c "composer update"``` 55 | - Run ```docker-compose run app bash -c "php artisan migrate:fresh --seed"``` 56 | - Run ```docker-compose up -d``` 57 | - That's all folks :) Now you have locally exactly the same image that you run on GAE flexible php environment. 58 | - Of course, remember to bind your .env variables and hosts with your docker-compose.yml file. 59 | 60 | ## How to deploy it to Google App Engine (GAE) 61 | 62 | Just put all the files of this repo on the root of your laravel project, then change your [app.yaml](https://cloud.google.com/appengine/docs/flexible/php/configuring-your-app-with-app-yaml) section: `runtime: php` to `runtime: custom`, and deploy your application with `gcloud app deploy` command. That's it 🎉. You can learn more about GAE here: https://cloud.google.com/appengine/docs/flexible/ 63 | 64 | ## Deploy to GAE using a CI/CD pipeline 65 | 66 | Google has an amazing CI tool called [Cloud Build](https://cloud.google.com/cloud-build/), it can easy run containers to test/deploy your code across multiple environments such as GAE, VMs, serverless, Kubernetes, or Firebase. Here an example of a Pipeline for laravel deploy using Cloud Build: 67 | 68 | ```yaml 69 | steps: 70 | - name: 'gcr.io/cloud-builders/gsutil' 71 | args: ['cp', '.env.testing', '.env'] 72 | - name: 'docker/compose:1.23.1' 73 | args: ['run', 'app', 'composer', 'install', '--optimize-autoloader', '--no-interaction', '--no-ansi', '--no-progress', '--no-scripts', '--prefer-dist'] 74 | - name: 'docker/compose:1.23.1' 75 | args: ['run', 'app', 'vendor/bin/phpunit', '--no-coverage'] 76 | - name: 'gcr.io/cloud-builders/gcloud' 77 | args: ['app', 'deploy', '--no-promote'] 78 | timeout: '1800s' 79 | ``` 80 | -------------------------------------------------------------------------------- /app.yaml: -------------------------------------------------------------------------------- 1 | runtime: custom 2 | env: flex 3 | 4 | automatic_scaling: 5 | min_num_instances: 2 6 | max_num_instances: 5 7 | 8 | resources: 9 | cpu: 2 10 | memory_gb: 2 11 | disk_size_gb: 10 12 | 13 | runtime_config: 14 | document_root: public 15 | enable_stackdriver_integration: true 16 | 17 | readiness_check: 18 | app_start_timeout_sec: 1800 19 | 20 | beta_settings: 21 | cloud_sql_instances: 22 | 23 | skip_files: 24 | - key: value 25 | 26 | env_variables: 27 | OPCACHE_SAVE_COMMENTS: 0 28 | KEY: VALUE 29 | -------------------------------------------------------------------------------- /docker-compose.testing.yml: -------------------------------------------------------------------------------- 1 | version: '3.6' 2 | services: 3 | app-tests: 4 | build: 5 | context: . 6 | dockerfile: Dockerfile.testing 7 | container_name: testing-api-app 8 | ports: 9 | - 80:8080 10 | environment: 11 | - DOCUMENT_ROOT=/app/public 12 | - SKIP_LOCKDOWN_DOCUMENT_ROOT=true 13 | - OPCACHE_SAVE_COMMENTS=1 14 | - OPCACHE_VALIDATE_TIMESTAMPS=1 15 | volumes: 16 | - .:/app 17 | depends_on: 18 | - pgsql-tests 19 | - redis-tests 20 | 21 | pgsql-tests: 22 | image: launcher.gcr.io/google/postgresql11 23 | container_name: testing-api-pgsql-tests 24 | ports: 25 | - 5434:5432 26 | environment: 27 | POSTGRES_DB: testing_tests 28 | POSTGRES_USER: testing_tests 29 | POSTGRES_PASSWORD: testing_tests 30 | volumes: 31 | - testing-pgsql-tests:/var/lib/postgresql/data 32 | 33 | redis-tests: 34 | image: launcher.gcr.io/google/redis4 35 | container_name: testing-api-redis-tests 36 | volumes: 37 | - testing-redis-tests:/data 38 | ports: 39 | - 6378:6379 40 | 41 | networks: 42 | default: 43 | name: testing-api_default 44 | volumes: 45 | testing-pgsql-tests: 46 | driver: local 47 | testing-redis-tests: 48 | driver: local 49 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.6' 2 | services: 3 | app: 4 | build: 5 | context: . 6 | container_name: default-api-app 7 | ports: 8 | - 80:8080 9 | environment: 10 | - DOCUMENT_ROOT=/app/public 11 | - SKIP_LOCKDOWN_DOCUMENT_ROOT=true 12 | - OPCACHE_SAVE_COMMENTS=1 13 | - OPCACHE_VALIDATE_TIMESTAMPS=1 14 | volumes: 15 | - .:/app 16 | depends_on: 17 | - pgsql 18 | - redis 19 | 20 | pgsql: 21 | image: launcher.gcr.io/google/postgresql11 22 | container_name: default-api-pgsql 23 | ports: 24 | - 5432:5432 25 | environment: 26 | POSTGRES_DB: default 27 | POSTGRES_USER: default 28 | POSTGRES_PASSWORD: default 29 | volumes: 30 | - default-pgsql:/var/lib/postgresql/data 31 | 32 | redis: 33 | image: launcher.gcr.io/google/redis4 34 | container_name: default-api-redis 35 | volumes: 36 | - default-redis:/data 37 | ports: 38 | - 6379:6379 39 | 40 | networks: 41 | default: 42 | name: default-api_default 43 | volumes: 44 | default-pgsql: 45 | driver: local 46 | default-redis: 47 | driver: local 48 | -------------------------------------------------------------------------------- /nginx.conf: -------------------------------------------------------------------------------- 1 | # Copyright 2015 Google Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | daemon off; 16 | 17 | user www-data; 18 | worker_processes auto; 19 | error_log /dev/stderr info; 20 | 21 | events { 22 | worker_connections 4096; 23 | multi_accept on; 24 | use epoll; 25 | } 26 | 27 | http { 28 | include mime.types; 29 | include gzip_params; 30 | server_tokens off; 31 | default_type application/json; 32 | 33 | client_max_body_size 10m; 34 | 35 | access_log /dev/stdout; 36 | 37 | sendfile on; 38 | tcp_nopush on; 39 | tcp_nodelay on; 40 | 41 | keepalive_timeout 60; 42 | keepalive_requests 10000; 43 | 44 | map $http_x_forwarded_proto $fastcgi_https { 45 | default ''; 46 | https on; 47 | } 48 | 49 | map $http_upgrade $type { 50 | default 'web'; 51 | websocket 'ws'; 52 | } 53 | 54 | proxy_cache_path /tmp/sessions keys_zone=one:10m levels=1:2 inactive=600s max_size=100m; 55 | proxy_cache_key $scheme$proxy_host$request_uri; 56 | proxy_cache_methods GET HEAD; 57 | 58 | server { 59 | listen 8080 reuseport; 60 | root /app/public; 61 | index index.php; 62 | 63 | more_set_headers 'Access-Control-Allow-Origin: *'; 64 | more_set_headers 'Access-Control-Allow-Credentials: true'; 65 | more_set_headers 'Access-Control-Allow-Methods: GET, HEAD, POST, PUT, PATCH, DELETE'; 66 | more_set_headers 'Access-Control-Allow-Headers: Authorization, Cache-Control, Content-Type, Keep-Alive, Origin, USE-API-KEY, USE-API-SIGNATURE, X-Requested-With'; 67 | add_header 'Content-Security-Policy' "default-src 'self'"; 68 | add_header 'X-Content-Security-Policy' "default-src 'self'"; 69 | add_header 'Strict-Transport-Security' 'max-age=31536000; includeSubdomains;'; 70 | add_header 'X-Content-Type-Options' 'nosniff'; 71 | add_header 'X-Frame-Options' 'DENY'; 72 | add_header 'X-XSS-Protection' '1; mode=block'; 73 | add_header 'X-WebKit-CSP' "default-src 'self'"; 74 | 75 | location / { 76 | try_files /nonexistent @$type; 77 | } 78 | 79 | location @web { 80 | try_files $uri $uri/ @swoole; 81 | } 82 | 83 | location @ws { 84 | proxy_pass http://127.0.0.1:6001; 85 | proxy_read_timeout 60; 86 | proxy_connect_timeout 60; 87 | proxy_redirect off; 88 | 89 | # Allow the use of websockets 90 | proxy_http_version 1.1; 91 | proxy_set_header Upgrade $http_upgrade; 92 | proxy_set_header Connection 'upgrade'; 93 | proxy_set_header X-Real-IP $remote_addr; 94 | proxy_set_header X-Real-PORT $remote_port; 95 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 96 | proxy_set_header Host $host; 97 | proxy_set_header Scheme $scheme; 98 | proxy_set_header Server-Protocol $server_protocol; 99 | proxy_set_header Server-Name $server_name; 100 | proxy_set_header Server-Addr $server_addr; 101 | proxy_set_header Server-Port $server_port; 102 | proxy_cache_bypass $http_upgrade; 103 | } 104 | 105 | location = /index.php { 106 | # Ensure that there is no such file named 'not_exists' 107 | # in your 'public' directory. 108 | try_files /not_exists @swoole; 109 | } 110 | 111 | location @swoole { 112 | set $suffix ''; 113 | 114 | if ($uri = /index.php) { 115 | set $suffix '/'; 116 | } 117 | 118 | if ($request_method = 'OPTIONS') { 119 | add_header 'Access-Control-Max-Age' 1728000; 120 | add_header 'Content-Type' 'text/plain charset=UTF-8'; 121 | add_header 'Content-Length' 0; 122 | return 200; 123 | } 124 | 125 | proxy_http_version 1.1; 126 | proxy_set_header Connection ''; 127 | proxy_set_header X-Real-IP $remote_addr; 128 | proxy_set_header X-Real-PORT $remote_port; 129 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 130 | proxy_set_header Host $http_host; 131 | proxy_set_header Scheme $scheme; 132 | proxy_set_header Server-Protocol $server_protocol; 133 | proxy_set_header Server-Name $server_name; 134 | proxy_set_header Server-Addr $server_addr; 135 | proxy_set_header Server-Port $server_port; 136 | 137 | proxy_pass http://127.0.0.1:9000$suffix; 138 | } 139 | 140 | location ~ ^/_ah/health$ { 141 | access_log off; 142 | return 200 'ok'; 143 | } 144 | 145 | location = /favicon.ico { access_log off; log_not_found off; } 146 | location ~ /\. { access_log off; log_not_found off; deny all; } 147 | location ~ ~$ { access_log off; log_not_found off; deny all; } 148 | 149 | error_page 503 @503_json; 150 | error_page 502 @502_json; 151 | error_page 500 @500_json; 152 | error_page 404 @404_json; 153 | 154 | location @503_json { 155 | return 503 '{"data": {"message": "The server is temporary unable to serve your request"}, "meta": {"timestamp": $msec}}'; 156 | } 157 | 158 | location @502_json { 159 | return 502 '{"data": {"message": "The server encountered a temporary error and could not complete your request"}, "meta": {"timestamp": $msec}}'; 160 | } 161 | 162 | location @500_json { 163 | return 500 '{"data": {"message": "There was an error. Please try again later"}, "meta": {"timestamp": $msec}}'; 164 | } 165 | 166 | location @404_json { 167 | return 404 '{"data": {"message": "The requested resource was not found"}, "meta": {"timestamp": $msec}}'; 168 | } 169 | } 170 | } 171 | -------------------------------------------------------------------------------- /php.ini: -------------------------------------------------------------------------------- 1 | ; Copyright 2015 Google Inc. 2 | ; 3 | ; Licensed under the Apache License, Version 2.0 (the "License"); 4 | ; you may not use this file except in compliance with the License. 5 | ; You may obtain a copy of the License at 6 | ; 7 | ; http://www.apache.org/licenses/LICENSE-2.0 8 | ; 9 | ; Unless required by applicable law or agreed to in writing, software 10 | ; distributed under the License is distributed on an "AS IS" BASIS, 11 | ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | ; See the License for the specific language governing permissions and 13 | ; limitations under the License. 14 | 15 | [PHP] 16 | 17 | ;;;;;;;;;;;;;;;;;;; 18 | ; About php.ini ; 19 | ;;;;;;;;;;;;;;;;;;; 20 | ; PHP's initialization file, generally called php.ini, is responsible for 21 | ; configuring many of the aspects of PHP's behavior. 22 | 23 | ; PHP attempts to find and load this configuration from a number of locations. 24 | ; The following is a summary of its search order: 25 | ; 1. SAPI module specific location. 26 | ; 2. The PHPRC environment variable. (As of PHP 5.2.0) 27 | ; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0) 28 | ; 4. Current working directory (except CLI) 29 | ; 5. The web server's directory (for SAPI modules), or directory of PHP 30 | ; (otherwise in Windows) 31 | ; 6. The directory from the --with-config-file-path compile time option, or the 32 | ; Windows directory (C:\windows or C:\winnt) 33 | ; See the PHP docs for more specific information. 34 | ; http://php.net/configuration.file 35 | 36 | ; The syntax of the file is extremely simple. Whitespace and lines 37 | ; beginning with a semicolon are silently ignored (as you probably guessed). 38 | ; Section headers (e.g. [Foo]) are also silently ignored, even though 39 | ; they might mean something in the future. 40 | 41 | ; Directives following the section heading [PATH=/www/mysite] only 42 | ; apply to PHP files in the /www/mysite directory. Directives 43 | ; following the section heading [HOST=www.example.com] only apply to 44 | ; PHP files served from www.example.com. Directives set in these 45 | ; special sections cannot be overridden by user-defined INI files or 46 | ; at runtime. Currently, [PATH=] and [HOST=] sections only work under 47 | ; CGI/FastCGI. 48 | ; http://php.net/ini.sections 49 | 50 | ; Directives are specified using the following syntax: 51 | ; directive = value 52 | ; Directive names are *case sensitive* - foo=bar is different from FOO=bar. 53 | ; Directives are variables used to configure PHP or PHP extensions. 54 | ; There is no name validation. If PHP can't find an expected 55 | ; directive because it is not set or is mistyped, a default value will be used. 56 | 57 | ; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one 58 | ; of the INI constants (On, Off, True, False, Yes, No and None) or an expression 59 | ; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a 60 | ; previously set variable or directive (e.g. ${foo}) 61 | 62 | ; Expressions in the INI file are limited to bitwise operators and parentheses: 63 | ; | bitwise OR 64 | ; ^ bitwise XOR 65 | ; & bitwise AND 66 | ; ~ bitwise NOT 67 | ; ! boolean NOT 68 | 69 | ; Boolean flags can be turned on using the values 1, On, True or Yes. 70 | ; They can be turned off using the values 0, Off, False or No. 71 | 72 | ; An empty string can be denoted by simply not writing anything after the equal 73 | ; sign, or by using the None keyword: 74 | 75 | ; foo = ; sets foo to an empty string 76 | ; foo = None ; sets foo to an empty string 77 | ; foo = "None" ; sets foo to the string 'None' 78 | 79 | ; If you use constants in your value, and these constants belong to a 80 | ; dynamically loaded extension (either a PHP extension or a Zend extension), 81 | ; you may only use these constants *after* the line that loads the extension. 82 | 83 | ;;;;;;;;;;;;;;;;;;; 84 | ; About this file ; 85 | ;;;;;;;;;;;;;;;;;;; 86 | ; PHP comes packaged with two INI files. One that is recommended to be used 87 | ; in production environments and one that is recommended to be used in 88 | ; development environments. 89 | 90 | ; php.ini-production contains settings which hold security, performance and 91 | ; best practices at its core. But please be aware, these settings may break 92 | ; compatibility with older or less security conscience applications. We 93 | ; recommending using the production ini in production and testing environments. 94 | 95 | ; php.ini-development is very similar to its production variant, except it is 96 | ; much more verbose when it comes to errors. We recommend using the 97 | ; development version only in development environments, as errors shown to 98 | ; application users can inadvertently leak otherwise secure information. 99 | 100 | ; This is php.ini-production INI file. 101 | 102 | ;;;;;;;;;;;;;;;;;;; 103 | ; Quick Reference ; 104 | ;;;;;;;;;;;;;;;;;;; 105 | ; The following are all the settings which are different in either the production 106 | ; or development versions of the INIs with respect to PHP's default behavior. 107 | ; Please see the actual settings later in the document for more details as to why 108 | ; we recommend these changes in PHP's behavior. 109 | 110 | ; display_errors 111 | ; Default Value: On 112 | ; Development Value: On 113 | ; Production Value: Off 114 | 115 | ; display_startup_errors 116 | ; Default Value: Off 117 | ; Development Value: On 118 | ; Production Value: Off 119 | 120 | ; error_reporting 121 | ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 122 | ; Development Value: E_ALL 123 | ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT 124 | 125 | ; html_errors 126 | ; Default Value: On 127 | ; Development Value: On 128 | ; Production value: On 129 | 130 | ; max_input_time 131 | ; Default Value: -1 (Unlimited) 132 | ; Development Value: 60 (60 seconds) 133 | ; Production Value: 60 (60 seconds) 134 | 135 | ; output_buffering 136 | ; Default Value: Off 137 | ; Development Value: 4096 138 | ; Production Value: 4096 139 | 140 | ; register_argc_argv 141 | ; Default Value: On 142 | ; Development Value: Off 143 | ; Production Value: Off 144 | 145 | ; request_order 146 | ; Default Value: None 147 | ; Development Value: "GP" 148 | ; Production Value: "GP" 149 | 150 | ; session.gc_divisor 151 | ; Default Value: 100 152 | ; Development Value: 1000 153 | ; Production Value: 1000 154 | 155 | ; session.hash_bits_per_character 156 | ; Default Value: 4 157 | ; Development Value: 5 158 | ; Production Value: 5 159 | 160 | ; short_open_tag 161 | ; Default Value: On 162 | ; Development Value: Off 163 | ; Production Value: Off 164 | 165 | ; track_errors 166 | ; Default Value: Off 167 | ; Development Value: On 168 | ; Production Value: Off 169 | 170 | ; url_rewriter.tags 171 | ; Default Value: "a=href,area=href,frame=src,form=,fieldset=" 172 | ; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry" 173 | ; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry" 174 | 175 | ; variables_order 176 | ; Default Value: "EGPCS" 177 | ; Development Value: "GPCS" 178 | ; Production Value: "GPCS" 179 | 180 | ;;;;;;;;;;;;;;;;;;;; 181 | ; php.ini Options ; 182 | ;;;;;;;;;;;;;;;;;;;; 183 | ; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini" 184 | ;user_ini.filename = ".user.ini" 185 | 186 | ; To disable this feature set this option to empty value 187 | ;user_ini.filename = 188 | 189 | ; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes) 190 | ;user_ini.cache_ttl = 300 191 | 192 | ;;;;;;;;;;;;;;;;;;;; 193 | ; Language Options ; 194 | ;;;;;;;;;;;;;;;;;;;; 195 | 196 | ; Enable the PHP scripting language engine under Apache. 197 | ; http://php.net/engine 198 | engine = On 199 | 200 | ; This directive determines whether or not PHP will recognize code between 201 | ; tags as PHP source which should be processed as such. It is 202 | ; generally recommended that should be used and that this feature 203 | ; should be disabled, as enabling it may result in issues when generating XML 204 | ; documents, however this remains supported for backward compatibility reasons. 205 | ; Note that this directive does not control the tags. 214 | ; http://php.net/asp-tags 215 | asp_tags = Off 216 | 217 | ; The number of significant digits displayed in floating point numbers. 218 | ; http://php.net/precision 219 | precision = 28 220 | 221 | ; Output buffering is a mechanism for controlling how much output data 222 | ; (excluding headers and cookies) PHP should keep internally before pushing that 223 | ; data to the client. If your application's output exceeds this setting, PHP 224 | ; will send that data in chunks of roughly the size you specify. 225 | ; Turning on this setting and managing its maximum buffer size can yield some 226 | ; interesting side-effects depending on your application and web server. 227 | ; You may be able to send headers and cookies after you've already sent output 228 | ; through print or echo. You also may see performance benefits if your server is 229 | ; emitting less packets due to buffered output versus PHP streaming the output 230 | ; as it gets it. On production servers, 4096 bytes is a good setting for performance 231 | ; reasons. 232 | ; Note: Output buffering can also be controlled via Output Buffering Control 233 | ; functions. 234 | ; Possible Values: 235 | ; On = Enabled and buffer is unlimited. (Use with caution) 236 | ; Off = Disabled 237 | ; Integer = Enables the buffer and sets its maximum size in bytes. 238 | ; Note: This directive is hardcoded to Off for the CLI SAPI 239 | ; Default Value: Off 240 | ; Development Value: 4096 241 | ; Production Value: 4096 242 | ; http://php.net/output-buffering 243 | output_buffering = 4096 244 | 245 | ; You can redirect all of the output of your scripts to a function. For 246 | ; example, if you set output_handler to "mb_output_handler", character 247 | ; encoding will be transparently converted to the specified encoding. 248 | ; Setting any output handler automatically turns on output buffering. 249 | ; Note: People who wrote portable scripts should not depend on this ini 250 | ; directive. Instead, explicitly set the output handler using ob_start(). 251 | ; Using this ini directive may cause problems unless you know what script 252 | ; is doing. 253 | ; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler" 254 | ; and you cannot use both "ob_gzhandler" and "zlib.output_compression". 255 | ; Note: output_handler must be empty if this is set 'On' !!!! 256 | ; Instead you must use zlib.output_handler. 257 | ; http://php.net/output-handler 258 | ;output_handler = 259 | 260 | ; Transparent output compression using the zlib library 261 | ; Valid values for this option are 'off', 'on', or a specific buffer size 262 | ; to be used for compression (default is 4KB) 263 | ; Note: Resulting chunk size may vary due to nature of compression. PHP 264 | ; outputs chunks that are few hundreds bytes each as a result of 265 | ; compression. If you prefer a larger chunk size for better 266 | ; performance, enable output_buffering in addition. 267 | ; Note: You need to use zlib.output_handler instead of the standard 268 | ; output_handler, or otherwise the output will be corrupted. 269 | ; http://php.net/zlib.output-compression 270 | zlib.output_compression = Off 271 | 272 | ; http://php.net/zlib.output-compression-level 273 | ;zlib.output_compression_level = -1 274 | 275 | ; You cannot specify additional output handlers if zlib.output_compression 276 | ; is activated here. This setting does the same as output_handler but in 277 | ; a different order. 278 | ; http://php.net/zlib.output-handler 279 | ;zlib.output_handler = 280 | 281 | ; Implicit flush tells PHP to tell the output layer to flush itself 282 | ; automatically after every output block. This is equivalent to calling the 283 | ; PHP function flush() after each and every call to print() or echo() and each 284 | ; and every HTML block. Turning this option on has serious performance 285 | ; implications and is generally recommended for debugging purposes only. 286 | ; http://php.net/implicit-flush 287 | ; Note: This directive is hardcoded to On for the CLI SAPI 288 | implicit_flush = Off 289 | 290 | ; The unserialize callback function will be called (with the undefined class' 291 | ; name as parameter), if the unserializer finds an undefined class 292 | ; which should be instantiated. A warning appears if the specified function is 293 | ; not defined, or if the function doesn't include/implement the missing class. 294 | ; So only set this entry, if you really want to implement such a 295 | ; callback-function. 296 | unserialize_callback_func = 297 | 298 | ; When floats & doubles are serialized store serialize_precision significant 299 | ; digits after the floating point. The default value ensures that when floats 300 | ; are decoded with unserialize, the data will remain the same. 301 | serialize_precision = 28 302 | 303 | ; open_basedir, if set, limits all file operations to the defined directory 304 | ; and below. This directive makes most sense if used in a per-directory 305 | ; or per-virtualhost web server configuration file. 306 | ; http://php.net/open-basedir 307 | ; open_basedir = /app 308 | 309 | ; This directive allows you to disable certain functions for security reasons. 310 | ; It receives a comma-delimited list of function names. 311 | ; http://php.net/disable-functions 312 | disable_functions = system, passthru, phpinfo, show_source, highlight_file, popen, fopen_with_path, dbmopen, dbase_open, move_uploaded_file, filepro, filepro_rowcount, filepro_retrieve, posix_mkfifo 313 | 314 | ; This directive allows you to disable certain classes for security reasons. 315 | ; It receives a comma-delimited list of class names. 316 | ; http://php.net/disable-classes 317 | disable_classes = 318 | 319 | ; Colors for Syntax Highlighting mode. Anything that's acceptable in 320 | ; would work. 321 | ; http://php.net/syntax-highlighting 322 | ;highlight.string = #DD0000 323 | ;highlight.comment = #FF9900 324 | ;highlight.keyword = #007700 325 | ;highlight.default = #0000BB 326 | ;highlight.html = #000000 327 | 328 | ; If enabled, the request will be allowed to complete even if the user aborts 329 | ; the request. Consider enabling it if executing long requests, which may end up 330 | ; being interrupted by the user or a browser timing out. PHP's default behavior 331 | ; is to disable this feature. 332 | ; http://php.net/ignore-user-abort 333 | ;ignore_user_abort = On 334 | 335 | ; Determines the size of the realpath cache to be used by PHP. This value should 336 | ; be increased on systems where PHP opens many files to reflect the quantity of 337 | ; the file operations performed. 338 | ; http://php.net/realpath-cache-size 339 | ;realpath_cache_size = 16k 340 | 341 | ; Duration of time, in seconds for which to cache realpath information for a given 342 | ; file or directory. For systems with rarely changing files, consider increasing this 343 | ; value. 344 | ; http://php.net/realpath-cache-ttl 345 | realpath_cache_ttl = 600 346 | 347 | ; Enables or disables the circular reference collector. 348 | ; http://php.net/zend.enable-gc 349 | zend.enable_gc = On 350 | 351 | ; If enabled, scripts may be written in encodings that are incompatible with 352 | ; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such 353 | ; encodings. To use this feature, mbstring extension must be enabled. 354 | ; Default: Off 355 | ;zend.multibyte = Off 356 | 357 | ; Allows to set the default encoding for the scripts. This value will be used 358 | ; unless "declare(encoding=...)" directive appears at the top of the script. 359 | ; Only affects if zend.multibyte is set. 360 | ; Default: "" 361 | ;zend.script_encoding = 362 | 363 | ;;;;;;;;;;;;;;;;; 364 | ; Miscellaneous ; 365 | ;;;;;;;;;;;;;;;;; 366 | 367 | ; Decides whether PHP may expose the fact that it is installed on the server 368 | ; (e.g. by adding its signature to the Web server header). It is no security 369 | ; threat in any way, but it makes it possible to determine whether you use PHP 370 | ; on your server or not. 371 | ; http://php.net/expose-php 372 | expose_php = Off 373 | 374 | ;;;;;;;;;;;;;;;;;;; 375 | ; Resource Limits ; 376 | ;;;;;;;;;;;;;;;;;;; 377 | 378 | ; Maximum execution time of each script, in seconds 379 | ; http://php.net/max-execution-time 380 | ; Note: This directive is hardcoded to 0 for the CLI SAPI 381 | max_execution_time = 86400 382 | 383 | ; Maximum amount of time each script may spend parsing request data. It's a good 384 | ; idea to limit this time on productions servers in order to eliminate unexpectedly 385 | ; long running scripts. 386 | ; Note: This directive is hardcoded to -1 for the CLI SAPI 387 | ; Default Value: -1 (Unlimited) 388 | ; Development Value: 60 (60 seconds) 389 | ; Production Value: 60 (60 seconds) 390 | ; http://php.net/max-input-time 391 | max_input_time = 60 392 | 393 | ; Maximum input variable nesting level 394 | ; http://php.net/max-input-nesting-level 395 | ;max_input_nesting_level = 64 396 | 397 | ; How many GET/POST/COOKIE input variables may be accepted 398 | ; max_input_vars = 1000 399 | 400 | ; Maximum amount of memory a script may consume (128MB) 401 | ; http://php.net/memory-limit 402 | memory_limit = -1 403 | 404 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 405 | ; Error handling and logging ; 406 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 407 | 408 | ; This directive informs PHP of which errors, warnings and notices you would like 409 | ; it to take action for. The recommended way of setting values for this 410 | ; directive is through the use of the error level constants and bitwise 411 | ; operators. The error level constants are below here for convenience as well as 412 | ; some common settings and their meanings. 413 | ; By default, PHP is set to take action on all errors, notices and warnings EXCEPT 414 | ; those related to E_NOTICE and E_STRICT, which together cover best practices and 415 | ; recommended coding standards in PHP. For performance reasons, this is the 416 | ; recommend error reporting setting. Your production server shouldn't be wasting 417 | ; resources complaining about best practices and coding standards. That's what 418 | ; development servers and development settings are for. 419 | ; Note: The php.ini-development file has this setting as E_ALL. This 420 | ; means it pretty much reports everything which is exactly what you want during 421 | ; development and early testing. 422 | ; 423 | ; Error Level Constants: 424 | ; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) 425 | ; E_ERROR - fatal run-time errors 426 | ; E_RECOVERABLE_ERROR - almost fatal run-time errors 427 | ; E_WARNING - run-time warnings (non-fatal errors) 428 | ; E_PARSE - compile-time parse errors 429 | ; E_NOTICE - run-time notices (these are warnings which often result 430 | ; from a bug in your code, but it's possible that it was 431 | ; intentional (e.g., using an uninitialized variable and 432 | ; relying on the fact it is automatically initialized to an 433 | ; empty string) 434 | ; E_STRICT - run-time notices, enable to have PHP suggest changes 435 | ; to your code which will ensure the best interoperability 436 | ; and forward compatibility of your code 437 | ; E_CORE_ERROR - fatal errors that occur during PHP's initial startup 438 | ; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's 439 | ; initial startup 440 | ; E_COMPILE_ERROR - fatal compile-time errors 441 | ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) 442 | ; E_USER_ERROR - user-generated error message 443 | ; E_USER_WARNING - user-generated warning message 444 | ; E_USER_NOTICE - user-generated notice message 445 | ; E_DEPRECATED - warn about code that will not work in future versions 446 | ; of PHP 447 | ; E_USER_DEPRECATED - user-generated deprecation warnings 448 | ; 449 | ; Common Values: 450 | ; E_ALL (Show all errors, warnings and notices including coding standards.) 451 | ; E_ALL & ~E_NOTICE (Show all errors, except for notices) 452 | ; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.) 453 | ; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) 454 | ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 455 | ; Development Value: E_ALL 456 | ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT 457 | ; http://php.net/error-reporting 458 | error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 459 | 460 | ; This directive controls whether or not and where PHP will output errors, 461 | ; notices and warnings too. Error output is very useful during development, but 462 | ; it could be very dangerous in production environments. Depending on the code 463 | ; which is triggering the error, sensitive information could potentially leak 464 | ; out of your application such as database usernames and passwords or worse. 465 | ; For production environments, we recommend logging errors rather than 466 | ; sending them to STDOUT. 467 | ; Possible Values: 468 | ; Off = Do not display any errors 469 | ; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) 470 | ; On or stdout = Display errors to STDOUT 471 | ; Default Value: On 472 | ; Development Value: On 473 | ; Production Value: Off 474 | ; http://php.net/display-errors 475 | display_errors = Off 476 | 477 | ; The display of errors which occur during PHP's startup sequence are handled 478 | ; separately from display_errors. PHP's default behavior is to suppress those 479 | ; errors from clients. Turning the display of startup errors on can be useful in 480 | ; debugging configuration problems. We strongly recommend you 481 | ; set this to 'off' for production servers. 482 | ; Default Value: Off 483 | ; Development Value: On 484 | ; Production Value: Off 485 | ; http://php.net/display-startup-errors 486 | display_startup_errors = Off 487 | 488 | ; Besides displaying errors, PHP can also log errors to locations such as a 489 | ; server-specific log, STDERR, or a location specified by the error_log 490 | ; directive found below. While errors should not be displayed on productions 491 | ; servers they should still be monitored and logging is a great way to do that. 492 | ; Default Value: Off 493 | ; Development Value: On 494 | ; Production Value: On 495 | ; http://php.net/log-errors 496 | log_errors = On 497 | 498 | ; Set maximum length of log_errors. In error_log information about the source is 499 | ; added. The default is 1024 and 0 allows to not apply any maximum length at all. 500 | ; http://php.net/log-errors-max-len 501 | log_errors_max_len = 1024 502 | 503 | ; Do not log repeated messages. Repeated errors must occur in same file on same 504 | ; line unless ignore_repeated_source is set true. 505 | ; http://php.net/ignore-repeated-errors 506 | ignore_repeated_errors = Off 507 | 508 | ; Ignore source of message when ignoring repeated messages. When this setting 509 | ; is On you will not log errors with repeated messages from different files or 510 | ; source lines. 511 | ; http://php.net/ignore-repeated-source 512 | ignore_repeated_source = Off 513 | 514 | ; If this parameter is set to Off, then memory leaks will not be shown (on 515 | ; stdout or in the log). This has only effect in a debug compile, and if 516 | ; error reporting includes E_WARNING in the allowed list 517 | ; http://php.net/report-memleaks 518 | report_memleaks = On 519 | 520 | ; This setting is on by default. 521 | ;report_zend_debug = 0 522 | 523 | ; Store the last error/warning message in $php_errormsg (boolean). Setting this value 524 | ; to On can assist in debugging and is appropriate for development servers. It should 525 | ; however be disabled on production servers. 526 | ; Default Value: Off 527 | ; Development Value: On 528 | ; Production Value: Off 529 | ; http://php.net/track-errors 530 | track_errors = Off 531 | 532 | ; Turn off normal error reporting and emit XML-RPC error XML 533 | ; http://php.net/xmlrpc-errors 534 | ;xmlrpc_errors = 0 535 | 536 | ; An XML-RPC faultCode 537 | ;xmlrpc_error_number = 0 538 | 539 | ; When PHP displays or logs an error, it has the capability of formatting the 540 | ; error message as HTML for easier reading. This directive controls whether 541 | ; the error message is formatted as HTML or not. 542 | ; Note: This directive is hardcoded to Off for the CLI SAPI 543 | ; Default Value: On 544 | ; Development Value: On 545 | ; Production value: On 546 | ; http://php.net/html-errors 547 | html_errors = Off 548 | 549 | ; If html_errors is set to On *and* docref_root is not empty, then PHP 550 | ; produces clickable error messages that direct to a page describing the error 551 | ; or function causing the error in detail. 552 | ; You can download a copy of the PHP manual from http://php.net/docs 553 | ; and change docref_root to the base URL of your local copy including the 554 | ; leading '/'. You must also specify the file extension being used including 555 | ; the dot. PHP's default behavior is to leave these settings empty, in which 556 | ; case no links to documentation are generated. 557 | ; Note: Never use this feature for production boxes. 558 | ; http://php.net/docref-root 559 | ; Examples 560 | ;docref_root = "/phpmanual/" 561 | 562 | ; http://php.net/docref-ext 563 | ;docref_ext = .html 564 | 565 | ; String to output before an error message. PHP's default behavior is to leave 566 | ; this setting blank. 567 | ; http://php.net/error-prepend-string 568 | ; Example: 569 | ;error_prepend_string = "" 570 | 571 | ; String to output after an error message. PHP's default behavior is to leave 572 | ; this setting blank. 573 | ; http://php.net/error-append-string 574 | ; Example: 575 | ;error_append_string = "" 576 | 577 | ; Log errors to specified file. PHP's default behavior is to leave this value 578 | ; empty. 579 | ; http://php.net/error-log 580 | ; Example: 581 | ;error_log = php_errors.log 582 | ; Log errors to stderr 583 | error_log = /dev/stderr 584 | 585 | ;windows.show_crt_warning 586 | ; Default value: 0 587 | ; Development value: 0 588 | ; Production value: 0 589 | 590 | ;;;;;;;;;;;;;;;;; 591 | ; Data Handling ; 592 | ;;;;;;;;;;;;;;;;; 593 | 594 | ; The separator used in PHP generated URLs to separate arguments. 595 | ; PHP's default setting is "&". 596 | ; http://php.net/arg-separator.output 597 | ; Example: 598 | ;arg_separator.output = "&" 599 | 600 | ; List of separator(s) used by PHP to parse input URLs into variables. 601 | ; PHP's default setting is "&". 602 | ; NOTE: Every character in this directive is considered as separator! 603 | ; http://php.net/arg-separator.input 604 | ; Example: 605 | ;arg_separator.input = ";&" 606 | 607 | ; This directive determines which super global arrays are registered when PHP 608 | ; starts up. G,P,C,E & S are abbreviations for the following respective super 609 | ; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty 610 | ; paid for the registration of these arrays and because ENV is not as commonly 611 | ; used as the others, ENV is not recommended on productions servers. You 612 | ; can still get access to the environment variables through getenv() should you 613 | ; need to. 614 | ; Default Value: "EGPCS" 615 | ; Development Value: "GPCS" 616 | ; Production Value: "GPCS"; 617 | ; http://php.net/variables-order 618 | variables_order = "GPCS" 619 | 620 | ; This directive determines which super global data (G,P & C) should be 621 | ; registered into the super global array REQUEST. If so, it also determines 622 | ; the order in which that data is registered. The values for this directive 623 | ; are specified in the same manner as the variables_order directive, 624 | ; EXCEPT one. Leaving this value empty will cause PHP to use the value set 625 | ; in the variables_order directive. It does not mean it will leave the super 626 | ; globals array REQUEST empty. 627 | ; Default Value: None 628 | ; Development Value: "GP" 629 | ; Production Value: "GP" 630 | ; http://php.net/request-order 631 | request_order = "GP" 632 | 633 | ; This directive determines whether PHP registers $argv & $argc each time it 634 | ; runs. $argv contains an array of all the arguments passed to PHP when a script 635 | ; is invoked. $argc contains an integer representing the number of arguments 636 | ; that were passed when the script was invoked. These arrays are extremely 637 | ; useful when running scripts from the command line. When this directive is 638 | ; enabled, registering these variables consumes CPU cycles and memory each time 639 | ; a script is executed. For performance reasons, this feature should be disabled 640 | ; on production servers. 641 | ; Note: This directive is hardcoded to On for the CLI SAPI 642 | ; Default Value: On 643 | ; Development Value: Off 644 | ; Production Value: Off 645 | ; http://php.net/register-argc-argv 646 | register_argc_argv = Off 647 | 648 | ; When enabled, the ENV, REQUEST and SERVER variables are created when they're 649 | ; first used (Just In Time) instead of when the script starts. If these 650 | ; variables are not used within a script, having this directive on will result 651 | ; in a performance gain. The PHP directive register_argc_argv must be disabled 652 | ; for this directive to have any affect. 653 | ; http://php.net/auto-globals-jit 654 | auto_globals_jit = On 655 | 656 | ; Whether PHP will read the POST data. 657 | ; This option is enabled by default. 658 | ; Most likely, you won't want to disable this option globally. It causes $_POST 659 | ; and $_FILES to always be empty; the only way you will be able to read the 660 | ; POST data will be through the php://input stream wrapper. This can be useful 661 | ; to proxy requests or to process the POST data in a memory efficient fashion. 662 | ; http://php.net/enable-post-data-reading 663 | ;enable_post_data_reading = Off 664 | 665 | ; Maximum size of POST data that PHP will accept. 666 | ; Its value may be 0 to disable the limit. It is ignored if POST data reading 667 | ; is disabled through enable_post_data_reading. 668 | ; http://php.net/post-max-size 669 | post_max_size = 10M 670 | 671 | ; Automatically add files before PHP document. 672 | ; http://php.net/auto-prepend-file 673 | auto_prepend_file = 674 | 675 | ; Automatically add files after PHP document. 676 | ; http://php.net/auto-append-file 677 | auto_append_file = 678 | 679 | ; By default, PHP will output a character encoding using 680 | ; the Content-type: header. To disable sending of the charset, simply 681 | ; set it to be empty. 682 | ; 683 | ; PHP's built-in default is text/html 684 | ; http://php.net/default-mimetype 685 | default_mimetype = "text/html" 686 | 687 | ; PHP's default character set is set to UTF-8. 688 | ; http://php.net/default-charset 689 | default_charset = "UTF-8" 690 | 691 | ; PHP internal character encoding is set to empty. 692 | ; If empty, default_charset is used. 693 | ; http://php.net/internal-encoding 694 | ;internal_encoding = 695 | 696 | ; PHP input character encoding is set to empty. 697 | ; If empty, default_charset is used. 698 | ; http://php.net/input-encoding 699 | ;input_encoding = 700 | 701 | ; PHP output character encoding is set to empty. 702 | ; If empty, default_charset is used. 703 | ; mbstring or iconv output handler is used. 704 | ; See also output_buffer. 705 | ; http://php.net/output-encoding 706 | ;output_encoding = 707 | 708 | ; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is 709 | ; to disable this feature and it will be removed in a future version. 710 | ; If post reading is disabled through enable_post_data_reading, 711 | ; $HTTP_RAW_POST_DATA is *NOT* populated. 712 | ; http://php.net/always-populate-raw-post-data 713 | ;always_populate_raw_post_data = -1 714 | 715 | ;;;;;;;;;;;;;;;;;;;;;;;;; 716 | ; Paths and Directories ; 717 | ;;;;;;;;;;;;;;;;;;;;;;;;; 718 | 719 | ; UNIX: "/path1:/path2" 720 | ;include_path = ".:/php/includes" 721 | ; 722 | ; Windows: "\path1;\path2" 723 | ;include_path = ".;c:\php\includes" 724 | ; 725 | ; PHP's default setting for include_path is ".;/path/to/php/pear" 726 | ; http://php.net/include-path 727 | 728 | ; The root of the PHP pages, used only if nonempty. 729 | ; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root 730 | ; if you are running php as a CGI under any web server (other than IIS) 731 | ; see documentation for security issues. The alternate is to use the 732 | ; cgi.force_redirect configuration below 733 | ; http://php.net/doc-root 734 | doc_root = ${DOCUMENT_ROOT} 735 | 736 | ; The directory under which PHP opens the script using /~username used only 737 | ; if nonempty. 738 | ; http://php.net/user-dir 739 | user_dir = 740 | 741 | ; Directory in which the loadable extensions (modules) reside. 742 | ; http://php.net/extension-dir 743 | ; extension_dir = "./" 744 | ; On windows: 745 | ; extension_dir = "ext" 746 | 747 | ; Directory where the temporary files should be placed. 748 | ; Defaults to the system default (see sys_get_temp_dir) 749 | ; sys_temp_dir = "/tmp" 750 | 751 | ; Whether or not to enable the dl() function. The dl() function does NOT work 752 | ; properly in multithreaded servers, such as IIS or Zeus, and is automatically 753 | ; disabled on them. 754 | ; http://php.net/enable-dl 755 | enable_dl = Off 756 | 757 | ; cgi.force_redirect is necessary to provide security running PHP as a CGI under 758 | ; most web servers. Left undefined, PHP turns this on by default. You can 759 | ; turn it off here AT YOUR OWN RISK 760 | ; **You CAN safely turn this off for IIS, in fact, you MUST.** 761 | ; http://php.net/cgi.force-redirect 762 | cgi.force_redirect = 1 763 | 764 | ; if cgi.nph is enabled it will force cgi to always sent Status: 200 with 765 | ; every request. PHP's default behavior is to disable this feature. 766 | ;cgi.nph = 1 767 | 768 | ; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape 769 | ; (iPlanet) web servers, you MAY need to set an environment variable name that PHP 770 | ; will look for to know it is OK to continue execution. Setting this variable MAY 771 | ; cause security issues, KNOW WHAT YOU ARE DOING FIRST. 772 | ; http://php.net/cgi.redirect-status-env 773 | ;cgi.redirect_status_env = 774 | 775 | ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's 776 | ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok 777 | ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting 778 | ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting 779 | ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts 780 | ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. 781 | ; http://php.net/cgi.fix-pathinfo 782 | ;cgi.fix_pathinfo=1 783 | 784 | ; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate 785 | ; security tokens of the calling client. This allows IIS to define the 786 | ; security context that the request runs under. mod_fastcgi under Apache 787 | ; does not currently support this feature (03/17/2002) 788 | ; Set to 1 if running under IIS. Default is zero. 789 | ; http://php.net/fastcgi.impersonate 790 | ;fastcgi.impersonate = 1 791 | 792 | ; Disable logging through FastCGI connection. PHP's default behavior is to enable 793 | ; this feature. 794 | ;fastcgi.logging = 0 795 | 796 | ; cgi.rfc2616_headers configuration option tells PHP what type of headers to 797 | ; use when sending HTTP response code. If set to 0, PHP sends Status: header that 798 | ; is supported by Apache. When this option is set to 1, PHP will send 799 | ; RFC2616 compliant header. 800 | ; Default is zero. 801 | ; http://php.net/cgi.rfc2616-headers 802 | ;cgi.rfc2616_headers = 0 803 | 804 | ;;;;;;;;;;;;;;;; 805 | ; File Uploads ; 806 | ;;;;;;;;;;;;;;;; 807 | 808 | ; Whether to allow HTTP file uploads. 809 | ; http://php.net/file-uploads 810 | file_uploads = On 811 | 812 | ; Temporary directory for HTTP uploaded files (will use system default if not 813 | ; specified). 814 | ; http://php.net/upload-tmp-dir 815 | ;upload_tmp_dir = 816 | 817 | ; Maximum allowed size for uploaded files. 818 | ; http://php.net/upload-max-filesize 819 | upload_max_filesize = 10M 820 | 821 | ; Maximum number of files that can be uploaded via a single request 822 | max_file_uploads = 2 823 | 824 | ;;;;;;;;;;;;;;;;;; 825 | ; Fopen wrappers ; 826 | ;;;;;;;;;;;;;;;;;; 827 | 828 | ; Whether to allow the treatment of URLs (like http:// or ftp://) as files. 829 | ; http://php.net/allow-url-fopen 830 | allow_url_fopen = On 831 | 832 | ; Whether to allow include/require to open URLs (like http:// or ftp://) as files. 833 | ; http://php.net/allow-url-include 834 | allow_url_include = Off 835 | 836 | ; Define the anonymous ftp password (your email address). PHP's default setting 837 | ; for this is empty. 838 | ; http://php.net/from 839 | ;from="john@doe.com" 840 | 841 | ; Define the User-Agent string. PHP's default setting for this is empty. 842 | ; http://php.net/user-agent 843 | ;user_agent="PHP" 844 | 845 | ; Default timeout for socket based streams (seconds) 846 | ; http://php.net/default-socket-timeout 847 | default_socket_timeout = 60 848 | 849 | ; If your scripts have to deal with files from Macintosh systems, 850 | ; or you are running on a Mac and need to deal with files from 851 | ; unix or win32 systems, setting this flag will cause PHP to 852 | ; automatically detect the EOL character in those files so that 853 | ; fgets() and file() will work regardless of the source of the file. 854 | ; http://php.net/auto-detect-line-endings 855 | ;auto_detect_line_endings = Off 856 | 857 | ;;;;;;;;;;;;;;;;;;;;;; 858 | ; Dynamic Extensions ; 859 | ;;;;;;;;;;;;;;;;;;;;;; 860 | 861 | ; If you wish to have an extension loaded automatically, use the following 862 | ; syntax: 863 | ; 864 | ; extension=modulename.extension 865 | ; 866 | ; For example, on Windows: 867 | ; 868 | ; extension=msql.dll 869 | ; 870 | ; ... or under UNIX: 871 | ; 872 | ; extension=msql.so 873 | ; 874 | ; ... or with a path: 875 | ; 876 | ; extension=/path/to/extension/msql.so 877 | ; 878 | ; If you only provide the name of the extension, PHP will look for it in its 879 | ; default extension directory. 880 | ; 881 | ; Windows Extensions 882 | ; Note that ODBC support is built in, so no dll is needed for it. 883 | ; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5) 884 | ; extension folders as well as the separate PECL DLL download (PHP 5). 885 | ; Be sure to appropriately set the extension_dir directive. 886 | ; 887 | ;extension=php_bz2.dll 888 | ;extension=php_curl.dll 889 | ;extension=php_fileinfo.dll 890 | ;extension=php_gd2.dll 891 | ;extension=php_gettext.dll 892 | ;extension=php_gmp.dll 893 | ;extension=php_intl.dll 894 | ;extension=php_imap.dll 895 | ;extension=php_interbase.dll 896 | ;extension=php_ldap.dll 897 | ;extension=php_mbstring.dll 898 | ;extension=php_exif.dll ; Must be after mbstring as it depends on it 899 | ;extension=php_mysql.dll 900 | ;extension=php_mysqli.dll 901 | ;extension=php_oci8_12c.dll ; Use with Oracle Database 12c Instant Client 902 | ;extension=php_openssl.dll 903 | ;extension=php_pdo_firebird.dll 904 | ;extension=php_pdo_mysql.dll 905 | ;extension=php_pdo_oci.dll 906 | ;extension=php_pdo_odbc.dll 907 | ;extension=php_pdo_pgsql.dll 908 | ;extension=php_pdo_sqlite.dll 909 | ;extension=php_pgsql.dll 910 | ;extension=php_shmop.dll 911 | 912 | ; The MIBS data available in the PHP distribution must be installed. 913 | ; See http://www.php.net/manual/en/snmp.installation.php 914 | ;extension=php_snmp.dll 915 | 916 | ;extension=php_soap.dll 917 | ;extension=php_sockets.dll 918 | ;extension=php_sqlite3.dll 919 | ;extension=php_sybase_ct.dll 920 | ;extension=php_tidy.dll 921 | ;extension=php_xmlrpc.dll 922 | ;extension=php_xsl.dll 923 | 924 | ;;;;;;;;;;;;;;;;;;; 925 | ; Module Settings ; 926 | ;;;;;;;;;;;;;;;;;;; 927 | 928 | [CLI Server] 929 | ; Whether the CLI web server uses ANSI color coding in its terminal output. 930 | cli_server.color = On 931 | 932 | [Date] 933 | ; Defines the default timezone used by the date functions 934 | ; http://php.net/date.timezone 935 | date.timezone = "UTC" 936 | 937 | ; http://php.net/date.default-latitude 938 | ;date.default_latitude = 31.7667 939 | 940 | ; http://php.net/date.default-longitude 941 | ;date.default_longitude = 35.2333 942 | 943 | ; http://php.net/date.sunrise-zenith 944 | ;date.sunrise_zenith = 90.583333 945 | 946 | ; http://php.net/date.sunset-zenith 947 | ;date.sunset_zenith = 90.583333 948 | 949 | [filter] 950 | ; http://php.net/filter.default 951 | ;filter.default = unsafe_raw 952 | 953 | ; http://php.net/filter.default-flags 954 | ;filter.default_flags = 955 | 956 | [iconv] 957 | ; Use of this INI entry is deprecated, use global input_encoding instead. 958 | ; If empty, default_charset or input_encoding or iconv.input_encoding is used. 959 | ; The precedence is: default_charset < intput_encoding < iconv.input_encoding 960 | ;iconv.input_encoding = 961 | 962 | ; Use of this INI entry is deprecated, use global internal_encoding instead. 963 | ; If empty, default_charset or internal_encoding or iconv.internal_encoding is used. 964 | ; The precedence is: default_charset < internal_encoding < iconv.internal_encoding 965 | ;iconv.internal_encoding = 966 | 967 | ; Use of this INI entry is deprecated, use global output_encoding instead. 968 | ; If empty, default_charset or output_encoding or iconv.output_encoding is used. 969 | ; The precedence is: default_charset < output_encoding < iconv.output_encoding 970 | ; To use an output encoding conversion, iconv's output handler must be set 971 | ; otherwise output encoding conversion cannot be performed. 972 | ;iconv.output_encoding = 973 | 974 | [intl] 975 | ;intl.default_locale = 976 | ; This directive allows you to produce PHP errors when some error 977 | ; happens within intl functions. The value is the level of the error produced. 978 | ; Default is 0, which does not produce any errors. 979 | ;intl.error_level = E_WARNING 980 | 981 | [sqlite] 982 | ; http://php.net/sqlite.assoc-case 983 | ;sqlite.assoc_case = 0 984 | 985 | [sqlite3] 986 | ;sqlite3.extension_dir = 987 | 988 | [Pcre] 989 | ;PCRE library backtracking limit. 990 | ; http://php.net/pcre.backtrack-limit 991 | ;pcre.backtrack_limit=100000 992 | 993 | ;PCRE library recursion limit. 994 | ;Please note that if you set this value to a high number you may consume all 995 | ;the available process stack and eventually crash PHP (due to reaching the 996 | ;stack size limit imposed by the Operating System). 997 | ; http://php.net/pcre.recursion-limit 998 | ;pcre.recursion_limit=100000 999 | 1000 | [Pdo] 1001 | ; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off" 1002 | ; http://php.net/pdo-odbc.connection-pooling 1003 | ;pdo_odbc.connection_pooling=strict 1004 | 1005 | ;pdo_odbc.db2_instance_name 1006 | 1007 | [Pdo_mysql] 1008 | ; If mysqlnd is used: Number of cache slots for the internal result set cache 1009 | ; http://php.net/pdo_mysql.cache_size 1010 | pdo_mysql.cache_size = 2000 1011 | 1012 | ; Default socket name for local MySQL connects. If empty, uses the built-in 1013 | ; MySQL defaults. 1014 | ; http://php.net/pdo_mysql.default-socket 1015 | pdo_mysql.default_socket = 1016 | 1017 | [Phar] 1018 | ; http://php.net/phar.readonly 1019 | ;phar.readonly = On 1020 | 1021 | ; http://php.net/phar.require-hash 1022 | ;phar.require_hash = On 1023 | 1024 | ;phar.cache_list = 1025 | 1026 | [mail function] 1027 | ; For Win32 only. 1028 | ; http://php.net/smtp 1029 | SMTP = localhost 1030 | ; http://php.net/smtp-port 1031 | smtp_port = 25 1032 | 1033 | ; For Win32 only. 1034 | ; http://php.net/sendmail-from 1035 | ;sendmail_from = me@example.com 1036 | 1037 | ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). 1038 | ; http://php.net/sendmail-path 1039 | ;sendmail_path = 1040 | 1041 | ; Force the addition of the specified parameters to be passed as extra parameters 1042 | ; to the sendmail binary. These parameters will always replace the value of 1043 | ; the 5th parameter to mail(). 1044 | ;mail.force_extra_parameters = 1045 | 1046 | ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename 1047 | mail.add_x_header = On 1048 | 1049 | ; The path to a log file that will log all mail() calls. Log entries include 1050 | ; the full path of the script, line number, To address and headers. 1051 | ;mail.log = 1052 | ; Log mail to syslog (Event Log on Windows). 1053 | ;mail.log = syslog 1054 | 1055 | [SQL] 1056 | ; http://php.net/sql.safe-mode 1057 | sql.safe_mode = On 1058 | 1059 | [ODBC] 1060 | ; http://php.net/odbc.default-db 1061 | ;odbc.default_db = Not yet implemented 1062 | 1063 | ; http://php.net/odbc.default-user 1064 | ;odbc.default_user = Not yet implemented 1065 | 1066 | ; http://php.net/odbc.default-pw 1067 | ;odbc.default_pw = Not yet implemented 1068 | 1069 | ; Controls the ODBC cursor model. 1070 | ; Default: SQL_CURSOR_STATIC (default). 1071 | ;odbc.default_cursortype 1072 | 1073 | ; Allow or prevent persistent links. 1074 | ; http://php.net/odbc.allow-persistent 1075 | odbc.allow_persistent = On 1076 | 1077 | ; Check that a connection is still valid before reuse. 1078 | ; http://php.net/odbc.check-persistent 1079 | odbc.check_persistent = On 1080 | 1081 | ; Maximum number of persistent links. -1 means no limit. 1082 | ; http://php.net/odbc.max-persistent 1083 | odbc.max_persistent = -1 1084 | 1085 | ; Maximum number of links (persistent + non-persistent). -1 means no limit. 1086 | ; http://php.net/odbc.max-links 1087 | odbc.max_links = -1 1088 | 1089 | ; Handling of LONG fields. Returns number of bytes to variables. 0 means 1090 | ; passthru. 1091 | ; http://php.net/odbc.defaultlrl 1092 | odbc.defaultlrl = 4096 1093 | 1094 | ; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char. 1095 | ; See the documentation on odbc_binmode and odbc_longreadlen for an explanation 1096 | ; of odbc.defaultlrl and odbc.defaultbinmode 1097 | ; http://php.net/odbc.defaultbinmode 1098 | odbc.defaultbinmode = 1 1099 | 1100 | ;birdstep.max_links = -1 1101 | 1102 | [Interbase] 1103 | ; Allow or prevent persistent links. 1104 | ibase.allow_persistent = 1 1105 | 1106 | ; Maximum number of persistent links. -1 means no limit. 1107 | ibase.max_persistent = -1 1108 | 1109 | ; Maximum number of links (persistent + non-persistent). -1 means no limit. 1110 | ibase.max_links = -1 1111 | 1112 | ; Default database name for ibase_connect(). 1113 | ;ibase.default_db = 1114 | 1115 | ; Default username for ibase_connect(). 1116 | ;ibase.default_user = 1117 | 1118 | ; Default password for ibase_connect(). 1119 | ;ibase.default_password = 1120 | 1121 | ; Default charset for ibase_connect(). 1122 | ;ibase.default_charset = 1123 | 1124 | ; Default timestamp format. 1125 | ibase.timestampformat = "%Y-%m-%d %H:%M:%S" 1126 | 1127 | ; Default date format. 1128 | ibase.dateformat = "%Y-%m-%d" 1129 | 1130 | ; Default time format. 1131 | ibase.timeformat = "%H:%M:%S" 1132 | 1133 | [MySQL] 1134 | ; Allow accessing, from PHP's perspective, local files with LOAD DATA statements 1135 | ; http://php.net/mysql.allow_local_infile 1136 | mysql.allow_local_infile = On 1137 | 1138 | ; Allow or prevent persistent links. 1139 | ; http://php.net/mysql.allow-persistent 1140 | mysql.allow_persistent = On 1141 | 1142 | ; If mysqlnd is used: Number of cache slots for the internal result set cache 1143 | ; http://php.net/mysql.cache_size 1144 | mysql.cache_size = 2000 1145 | 1146 | ; Maximum number of persistent links. -1 means no limit. 1147 | ; http://php.net/mysql.max-persistent 1148 | mysql.max_persistent = -1 1149 | 1150 | ; Maximum number of links (persistent + non-persistent). -1 means no limit. 1151 | ; http://php.net/mysql.max-links 1152 | mysql.max_links = -1 1153 | 1154 | ; Default port number for mysql_connect(). If unset, mysql_connect() will use 1155 | ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the 1156 | ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look 1157 | ; at MYSQL_PORT. 1158 | ; http://php.net/mysql.default-port 1159 | mysql.default_port = 1160 | 1161 | ; Default socket name for local MySQL connects. If empty, uses the built-in 1162 | ; MySQL defaults. 1163 | ; http://php.net/mysql.default-socket 1164 | mysql.default_socket = 1165 | 1166 | ; Default host for mysql_connect() (doesn't apply in safe mode). 1167 | ; http://php.net/mysql.default-host 1168 | mysql.default_host = 1169 | 1170 | ; Default user for mysql_connect() (doesn't apply in safe mode). 1171 | ; http://php.net/mysql.default-user 1172 | mysql.default_user = 1173 | 1174 | ; Default password for mysql_connect() (doesn't apply in safe mode). 1175 | ; Note that this is generally a *bad* idea to store passwords in this file. 1176 | ; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password") 1177 | ; and reveal this password! And of course, any users with read access to this 1178 | ; file will be able to reveal the password as well. 1179 | ; http://php.net/mysql.default-password 1180 | mysql.default_password = 1181 | 1182 | ; Maximum time (in seconds) for connect timeout. -1 means no limit 1183 | ; http://php.net/mysql.connect-timeout 1184 | mysql.connect_timeout = 60 1185 | 1186 | ; Trace mode. When trace_mode is active (=On), warnings for table/index scans and 1187 | ; SQL-Errors will be displayed. 1188 | ; http://php.net/mysql.trace-mode 1189 | mysql.trace_mode = Off 1190 | 1191 | [MySQLi] 1192 | 1193 | ; Maximum number of persistent links. -1 means no limit. 1194 | ; http://php.net/mysqli.max-persistent 1195 | mysqli.max_persistent = -1 1196 | 1197 | ; Allow accessing, from PHP's perspective, local files with LOAD DATA statements 1198 | ; http://php.net/mysqli.allow_local_infile 1199 | ;mysqli.allow_local_infile = On 1200 | 1201 | ; Allow or prevent persistent links. 1202 | ; http://php.net/mysqli.allow-persistent 1203 | mysqli.allow_persistent = On 1204 | 1205 | ; Maximum number of links. -1 means no limit. 1206 | ; http://php.net/mysqli.max-links 1207 | mysqli.max_links = -1 1208 | 1209 | ; If mysqlnd is used: Number of cache slots for the internal result set cache 1210 | ; http://php.net/mysqli.cache_size 1211 | mysqli.cache_size = 2000 1212 | 1213 | ; Default port number for mysqli_connect(). If unset, mysqli_connect() will use 1214 | ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the 1215 | ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look 1216 | ; at MYSQL_PORT. 1217 | ; http://php.net/mysqli.default-port 1218 | mysqli.default_port = 3306 1219 | 1220 | ; Default socket name for local MySQL connects. If empty, uses the built-in 1221 | ; MySQL defaults. 1222 | ; http://php.net/mysqli.default-socket 1223 | mysqli.default_socket = 1224 | 1225 | ; Default host for mysql_connect() (doesn't apply in safe mode). 1226 | ; http://php.net/mysqli.default-host 1227 | mysqli.default_host = 1228 | 1229 | ; Default user for mysql_connect() (doesn't apply in safe mode). 1230 | ; http://php.net/mysqli.default-user 1231 | mysqli.default_user = 1232 | 1233 | ; Default password for mysqli_connect() (doesn't apply in safe mode). 1234 | ; Note that this is generally a *bad* idea to store passwords in this file. 1235 | ; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw") 1236 | ; and reveal this password! And of course, any users with read access to this 1237 | ; file will be able to reveal the password as well. 1238 | ; http://php.net/mysqli.default-pw 1239 | mysqli.default_pw = 1240 | 1241 | ; Allow or prevent reconnect 1242 | mysqli.reconnect = Off 1243 | 1244 | [mysqlnd] 1245 | ; Enable / Disable collection of general statistics by mysqlnd which can be 1246 | ; used to tune and monitor MySQL operations. 1247 | ; http://php.net/mysqlnd.collect_statistics 1248 | mysqlnd.collect_statistics = On 1249 | 1250 | ; Enable / Disable collection of memory usage statistics by mysqlnd which can be 1251 | ; used to tune and monitor MySQL operations. 1252 | ; http://php.net/mysqlnd.collect_memory_statistics 1253 | mysqlnd.collect_memory_statistics = Off 1254 | 1255 | ; Size of a pre-allocated buffer used when sending commands to MySQL in bytes. 1256 | ; http://php.net/mysqlnd.net_cmd_buffer_size 1257 | ;mysqlnd.net_cmd_buffer_size = 2048 1258 | 1259 | ; Size of a pre-allocated buffer used for reading data sent by the server in 1260 | ; bytes. 1261 | ; http://php.net/mysqlnd.net_read_buffer_size 1262 | ;mysqlnd.net_read_buffer_size = 32768 1263 | 1264 | [OCI8] 1265 | 1266 | ; Connection: Enables privileged connections using external 1267 | ; credentials (OCI_SYSOPER, OCI_SYSDBA) 1268 | ; http://php.net/oci8.privileged-connect 1269 | ;oci8.privileged_connect = Off 1270 | 1271 | ; Connection: The maximum number of persistent OCI8 connections per 1272 | ; process. Using -1 means no limit. 1273 | ; http://php.net/oci8.max-persistent 1274 | ;oci8.max_persistent = -1 1275 | 1276 | ; Connection: The maximum number of seconds a process is allowed to 1277 | ; maintain an idle persistent connection. Using -1 means idle 1278 | ; persistent connections will be maintained forever. 1279 | ; http://php.net/oci8.persistent-timeout 1280 | ;oci8.persistent_timeout = -1 1281 | 1282 | ; Connection: The number of seconds that must pass before issuing a 1283 | ; ping during oci_pconnect() to check the connection validity. When 1284 | ; set to 0, each oci_pconnect() will cause a ping. Using -1 disables 1285 | ; pings completely. 1286 | ; http://php.net/oci8.ping-interval 1287 | ;oci8.ping_interval = 60 1288 | 1289 | ; Connection: Set this to a user chosen connection class to be used 1290 | ; for all pooled server requests with Oracle 11g Database Resident 1291 | ; Connection Pooling (DRCP). To use DRCP, this value should be set to 1292 | ; the same string for all web servers running the same application, 1293 | ; the database pool must be configured, and the connection string must 1294 | ; specify to use a pooled server. 1295 | ;oci8.connection_class = 1296 | 1297 | ; High Availability: Using On lets PHP receive Fast Application 1298 | ; Notification (FAN) events generated when a database node fails. The 1299 | ; database must also be configured to post FAN events. 1300 | ;oci8.events = Off 1301 | 1302 | ; Tuning: This option enables statement caching, and specifies how 1303 | ; many statements to cache. Using 0 disables statement caching. 1304 | ; http://php.net/oci8.statement-cache-size 1305 | ;oci8.statement_cache_size = 20 1306 | 1307 | ; Tuning: Enables statement prefetching and sets the default number of 1308 | ; rows that will be fetched automatically after statement execution. 1309 | ; http://php.net/oci8.default-prefetch 1310 | ;oci8.default_prefetch = 100 1311 | 1312 | ; Compatibility. Using On means oci_close() will not close 1313 | ; oci_connect() and oci_new_connect() connections. 1314 | ; http://php.net/oci8.old-oci-close-semantics 1315 | ;oci8.old_oci_close_semantics = Off 1316 | 1317 | [PostgreSQL] 1318 | ; Allow or prevent persistent links. 1319 | ; http://php.net/pgsql.allow-persistent 1320 | pgsql.allow_persistent = On 1321 | 1322 | ; Detect broken persistent links always with pg_pconnect(). 1323 | ; Auto reset feature requires a little overheads. 1324 | ; http://php.net/pgsql.auto-reset-persistent 1325 | pgsql.auto_reset_persistent = Off 1326 | 1327 | ; Maximum number of persistent links. -1 means no limit. 1328 | ; http://php.net/pgsql.max-persistent 1329 | pgsql.max_persistent = -1 1330 | 1331 | ; Maximum number of links (persistent+non persistent). -1 means no limit. 1332 | ; http://php.net/pgsql.max-links 1333 | pgsql.max_links = -1 1334 | 1335 | ; Ignore PostgreSQL backends Notice message or not. 1336 | ; Notice message logging require a little overheads. 1337 | ; http://php.net/pgsql.ignore-notice 1338 | pgsql.ignore_notice = 0 1339 | 1340 | ; Log PostgreSQL backends Notice message or not. 1341 | ; Unless pgsql.ignore_notice=0, module cannot log notice message. 1342 | ; http://php.net/pgsql.log-notice 1343 | pgsql.log_notice = 0 1344 | 1345 | [Sybase-CT] 1346 | ; Allow or prevent persistent links. 1347 | ; http://php.net/sybct.allow-persistent 1348 | sybct.allow_persistent = On 1349 | 1350 | ; Maximum number of persistent links. -1 means no limit. 1351 | ; http://php.net/sybct.max-persistent 1352 | sybct.max_persistent = -1 1353 | 1354 | ; Maximum number of links (persistent + non-persistent). -1 means no limit. 1355 | ; http://php.net/sybct.max-links 1356 | sybct.max_links = -1 1357 | 1358 | ; Minimum server message severity to display. 1359 | ; http://php.net/sybct.min-server-severity 1360 | sybct.min_server_severity = 10 1361 | 1362 | ; Minimum client message severity to display. 1363 | ; http://php.net/sybct.min-client-severity 1364 | sybct.min_client_severity = 10 1365 | 1366 | ; Set per-context timeout 1367 | ; http://php.net/sybct.timeout 1368 | ;sybct.timeout= 1369 | 1370 | ;sybct.packet_size 1371 | 1372 | ; The maximum time in seconds to wait for a connection attempt to succeed before returning failure. 1373 | ; Default: one minute 1374 | ;sybct.login_timeout= 1375 | 1376 | ; The name of the host you claim to be connecting from, for display by sp_who. 1377 | ; Default: none 1378 | ;sybct.hostname= 1379 | 1380 | ; Allows you to define how often deadlocks are to be retried. -1 means "forever". 1381 | ; Default: 0 1382 | ;sybct.deadlock_retry_count= 1383 | 1384 | [bcmath] 1385 | ; Number of decimal digits for all bcmath functions. 1386 | ; http://php.net/bcmath.scale 1387 | bcmath.scale = 18 1388 | 1389 | [browscap] 1390 | ; http://php.net/browscap 1391 | ;browscap = extra/browscap.ini 1392 | 1393 | [Session] 1394 | ; Handler used to store/retrieve data. 1395 | ; http://php.net/session.save-handler 1396 | session.save_handler = files 1397 | 1398 | ; Argument passed to save_handler. In the case of files, this is the path 1399 | ; where data files are stored. Note: Windows users have to change this 1400 | ; variable in order to use PHP's session functions. 1401 | ; 1402 | ; The path can be defined as: 1403 | ; 1404 | ; session.save_path = "N;/path" 1405 | ; 1406 | ; where N is an integer. Instead of storing all the session files in 1407 | ; /path, what this will do is use subdirectories N-levels deep, and 1408 | ; store the session data in those directories. This is useful if 1409 | ; your OS has problems with many files in one directory, and is 1410 | ; a more efficient layout for servers that handle many sessions. 1411 | ; 1412 | ; NOTE 1: PHP will not create this directory structure automatically. 1413 | ; You can use the script in the ext/session dir for that purpose. 1414 | ; NOTE 2: See the section on garbage collection below if you choose to 1415 | ; use subdirectories for session storage 1416 | ; 1417 | ; The file storage module creates files using mode 600 by default. 1418 | ; You can change that by using 1419 | ; 1420 | ; session.save_path = "N;MODE;/path" 1421 | ; 1422 | ; where MODE is the octal representation of the mode. Note that this 1423 | ; does not overwrite the process's umask. 1424 | ; http://php.net/session.save-path 1425 | session.save_path = "/tmp/sessions" 1426 | 1427 | ; Whether to use strict session mode. 1428 | ; Strict session mode does not accept uninitialized session ID and regenerate 1429 | ; session ID if browser sends uninitialized session ID. Strict mode protects 1430 | ; applications from session fixation via session adoption vulnerability. It is 1431 | ; disabled by default for maximum compatibility, but enabling it is encouraged. 1432 | ; https://wiki.php.net/rfc/strict_sessions 1433 | session.use_strict_mode = 0 1434 | 1435 | ; Whether to use cookies. 1436 | ; http://php.net/session.use-cookies 1437 | session.use_cookies = 1 1438 | 1439 | ; http://php.net/session.cookie-secure 1440 | ;session.cookie_secure = 1441 | 1442 | ; This option forces PHP to fetch and use a cookie for storing and maintaining 1443 | ; the session id. We encourage this operation as it's very helpful in combating 1444 | ; session hijacking when not specifying and managing your own session id. It is 1445 | ; not the be-all and end-all of session hijacking defense, but it's a good start. 1446 | ; http://php.net/session.use-only-cookies 1447 | session.use_only_cookies = 1 1448 | 1449 | ; Name of the session (used as cookie name). 1450 | ; http://php.net/session.name 1451 | session.name = PHPSESSID 1452 | 1453 | ; Initialize session on request startup. 1454 | ; http://php.net/session.auto-start 1455 | session.auto_start = 0 1456 | 1457 | ; Lifetime in seconds of cookie or, if 0, until browser is restarted. 1458 | ; http://php.net/session.cookie-lifetime 1459 | session.cookie_lifetime = 0 1460 | 1461 | ; The path for which the cookie is valid. 1462 | ; http://php.net/session.cookie-path 1463 | session.cookie_path = / 1464 | 1465 | ; The domain for which the cookie is valid. 1466 | ; http://php.net/session.cookie-domain 1467 | session.cookie_domain = 1468 | 1469 | ; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript. 1470 | ; http://php.net/session.cookie-httponly 1471 | session.cookie_httponly = 1472 | 1473 | ; Handler used to serialize data. php is the standard serializer of PHP. 1474 | ; http://php.net/session.serialize-handler 1475 | session.serialize_handler = php 1476 | 1477 | ; Defines the probability that the 'garbage collection' process is started 1478 | ; on every session initialization. The probability is calculated by using 1479 | ; gc_probability/gc_divisor. Where session.gc_probability is the numerator 1480 | ; and gc_divisor is the denominator in the equation. Setting this value to 1 1481 | ; when the session.gc_divisor value is 100 will give you approximately a 1% chance 1482 | ; the gc will run on any give request. 1483 | ; Default Value: 1 1484 | ; Development Value: 1 1485 | ; Production Value: 1 1486 | ; http://php.net/session.gc-probability 1487 | session.gc_probability = 1 1488 | 1489 | ; Defines the probability that the 'garbage collection' process is started on every 1490 | ; session initialization. The probability is calculated by using the following equation: 1491 | ; gc_probability/gc_divisor. Where session.gc_probability is the numerator and 1492 | ; session.gc_divisor is the denominator in the equation. Setting this value to 1 1493 | ; when the session.gc_divisor value is 100 will give you approximately a 1% chance 1494 | ; the gc will run on any give request. Increasing this value to 1000 will give you 1495 | ; a 0.1% chance the gc will run on any give request. For high volume production servers, 1496 | ; this is a more efficient approach. 1497 | ; Default Value: 100 1498 | ; Development Value: 1000 1499 | ; Production Value: 1000 1500 | ; http://php.net/session.gc-divisor 1501 | session.gc_divisor = 1000 1502 | 1503 | ; After this number of seconds, stored data will be seen as 'garbage' and 1504 | ; cleaned up by the garbage collection process. 1505 | ; http://php.net/session.gc-maxlifetime 1506 | session.gc_maxlifetime = 1440 1507 | 1508 | ; NOTE: If you are using the subdirectory option for storing session files 1509 | ; (see session.save_path above), then garbage collection does *not* 1510 | ; happen automatically. You will need to do your own garbage 1511 | ; collection through a shell script, cron entry, or some other method. 1512 | ; For example, the following script would is the equivalent of 1513 | ; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): 1514 | ; find /path/to/sessions -cmin +24 -type f | xargs rm 1515 | 1516 | ; Check HTTP Referer to invalidate externally stored URLs containing ids. 1517 | ; HTTP_REFERER has to contain this substring for the session to be 1518 | ; considered as valid. 1519 | ; http://php.net/session.referer-check 1520 | session.referer_check = 1521 | 1522 | ; How many bytes to read from the file. 1523 | ; http://php.net/session.entropy-length 1524 | ;session.entropy_length = 32 1525 | 1526 | ; Specified here to create the session id. 1527 | ; http://php.net/session.entropy-file 1528 | ; Defaults to /dev/urandom 1529 | ; On systems that don't have /dev/urandom but do have /dev/arandom, this will default to /dev/arandom 1530 | ; If neither are found at compile time, the default is no entropy file. 1531 | ; On windows, setting the entropy_length setting will activate the 1532 | ; Windows random source (using the CryptoAPI) 1533 | ;session.entropy_file = /dev/urandom 1534 | 1535 | ; Set to {nocache,private,public,} to determine HTTP caching aspects 1536 | ; or leave this empty to avoid sending anti-caching headers. 1537 | ; http://php.net/session.cache-limiter 1538 | session.cache_limiter = nocache 1539 | 1540 | ; Document expires after n minutes. 1541 | ; http://php.net/session.cache-expire 1542 | session.cache_expire = 180 1543 | 1544 | ; trans sid support is disabled by default. 1545 | ; Use of trans sid may risk your users' security. 1546 | ; Use this option with caution. 1547 | ; - User may send URL contains active session ID 1548 | ; to other person via. email/irc/etc. 1549 | ; - URL that contains active session ID may be stored 1550 | ; in publicly accessible computer. 1551 | ; - User may access your site with the same session ID 1552 | ; always using URL stored in browser's history or bookmarks. 1553 | ; http://php.net/session.use-trans-sid 1554 | session.use_trans_sid = 0 1555 | 1556 | ; Select a hash function for use in generating session ids. 1557 | ; Possible Values 1558 | ; 0 (MD5 128 bits) 1559 | ; 1 (SHA-1 160 bits) 1560 | ; This option may also be set to the name of any hash function supported by 1561 | ; the hash extension. A list of available hashes is returned by the hash_algos() 1562 | ; function. 1563 | ; http://php.net/session.hash-function 1564 | session.hash_function = 0 1565 | 1566 | ; Define how many bits are stored in each character when converting 1567 | ; the binary hash data to something readable. 1568 | ; Possible values: 1569 | ; 4 (4 bits: 0-9, a-f) 1570 | ; 5 (5 bits: 0-9, a-v) 1571 | ; 6 (6 bits: 0-9, a-z, A-Z, "-", ",") 1572 | ; Default Value: 4 1573 | ; Development Value: 5 1574 | ; Production Value: 5 1575 | ; http://php.net/session.hash-bits-per-character 1576 | session.hash_bits_per_character = 5 1577 | 1578 | ; The URL rewriter will look for URLs in a defined set of HTML tags. 1579 | ; form/fieldset are special; if you include them here, the rewriter will 1580 | ; add a hidden field with the info which is otherwise appended 1581 | ; to URLs. If you want XHTML conformity, remove the form entry. 1582 | ; Note that all valid entries require a "=", even if no value follows. 1583 | ; Default Value: "a=href,area=href,frame=src,form=,fieldset=" 1584 | ; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry" 1585 | ; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry" 1586 | ; http://php.net/url-rewriter.tags 1587 | url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" 1588 | 1589 | ; Enable upload progress tracking in $_SESSION 1590 | ; Default Value: On 1591 | ; Development Value: On 1592 | ; Production Value: On 1593 | ; http://php.net/session.upload-progress.enabled 1594 | ;session.upload_progress.enabled = On 1595 | 1596 | ; Cleanup the progress information as soon as all POST data has been read 1597 | ; (i.e. upload completed). 1598 | ; Default Value: On 1599 | ; Development Value: On 1600 | ; Production Value: On 1601 | ; http://php.net/session.upload-progress.cleanup 1602 | ;session.upload_progress.cleanup = On 1603 | 1604 | ; A prefix used for the upload progress key in $_SESSION 1605 | ; Default Value: "upload_progress_" 1606 | ; Development Value: "upload_progress_" 1607 | ; Production Value: "upload_progress_" 1608 | ; http://php.net/session.upload-progress.prefix 1609 | ;session.upload_progress.prefix = "upload_progress_" 1610 | 1611 | ; The index name (concatenated with the prefix) in $_SESSION 1612 | ; containing the upload progress information 1613 | ; Default Value: "PHP_SESSION_UPLOAD_PROGRESS" 1614 | ; Development Value: "PHP_SESSION_UPLOAD_PROGRESS" 1615 | ; Production Value: "PHP_SESSION_UPLOAD_PROGRESS" 1616 | ; http://php.net/session.upload-progress.name 1617 | ;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS" 1618 | 1619 | ; How frequently the upload progress should be updated. 1620 | ; Given either in percentages (per-file), or in bytes 1621 | ; Default Value: "1%" 1622 | ; Development Value: "1%" 1623 | ; Production Value: "1%" 1624 | ; http://php.net/session.upload-progress.freq 1625 | ;session.upload_progress.freq = "1%" 1626 | 1627 | ; The minimum delay between updates, in seconds 1628 | ; Default Value: 1 1629 | ; Development Value: 1 1630 | ; Production Value: 1 1631 | ; http://php.net/session.upload-progress.min-freq 1632 | ;session.upload_progress.min_freq = "1" 1633 | 1634 | [MSSQL] 1635 | ; Allow or prevent persistent links. 1636 | mssql.allow_persistent = On 1637 | 1638 | ; Maximum number of persistent links. -1 means no limit. 1639 | mssql.max_persistent = -1 1640 | 1641 | ; Maximum number of links (persistent+non persistent). -1 means no limit. 1642 | mssql.max_links = -1 1643 | 1644 | ; Minimum error severity to display. 1645 | mssql.min_error_severity = 10 1646 | 1647 | ; Minimum message severity to display. 1648 | mssql.min_message_severity = 10 1649 | 1650 | ; Compatibility mode with old versions of PHP 3.0. 1651 | mssql.compatibility_mode = Off 1652 | 1653 | ; Connect timeout 1654 | ;mssql.connect_timeout = 5 1655 | 1656 | ; Query timeout 1657 | ;mssql.timeout = 60 1658 | 1659 | ; Valid range 0 - 2147483647. Default = 4096. 1660 | ;mssql.textlimit = 4096 1661 | 1662 | ; Valid range 0 - 2147483647. Default = 4096. 1663 | ;mssql.textsize = 4096 1664 | 1665 | ; Limits the number of records in each batch. 0 = all records in one batch. 1666 | ;mssql.batchsize = 0 1667 | 1668 | ; Specify how datetime and datetim4 columns are returned 1669 | ; On => Returns data converted to SQL server settings 1670 | ; Off => Returns values as YYYY-MM-DD hh:mm:ss 1671 | ;mssql.datetimeconvert = On 1672 | 1673 | ; Use NT authentication when connecting to the server 1674 | mssql.secure_connection = Off 1675 | 1676 | ; Specify max number of processes. -1 = library default 1677 | ; msdlib defaults to 25 1678 | ; FreeTDS defaults to 4096 1679 | ;mssql.max_procs = -1 1680 | 1681 | ; Specify client character set. 1682 | ; If empty or not set the client charset from freetds.conf is used 1683 | ; This is only used when compiled with FreeTDS 1684 | ;mssql.charset = "ISO-8859-1" 1685 | 1686 | [Assertion] 1687 | ; Assert(expr); active by default. 1688 | ; http://php.net/assert.active 1689 | ;assert.active = On 1690 | 1691 | ; Issue a PHP warning for each failed assertion. 1692 | ; http://php.net/assert.warning 1693 | ;assert.warning = On 1694 | 1695 | ; Don't bail out by default. 1696 | ; http://php.net/assert.bail 1697 | ;assert.bail = Off 1698 | 1699 | ; User-function to be called if an assertion fails. 1700 | ; http://php.net/assert.callback 1701 | ;assert.callback = 0 1702 | 1703 | ; Eval the expression with current error_reporting(). Set to true if you want 1704 | ; error_reporting(0) around the eval(). 1705 | ; http://php.net/assert.quiet-eval 1706 | ;assert.quiet_eval = 0 1707 | 1708 | [COM] 1709 | ; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs 1710 | ; http://php.net/com.typelib-file 1711 | ;com.typelib_file = 1712 | 1713 | ; allow Distributed-COM calls 1714 | ; http://php.net/com.allow-dcom 1715 | ;com.allow_dcom = true 1716 | 1717 | ; autoregister constants of a components typlib on com_load() 1718 | ; http://php.net/com.autoregister-typelib 1719 | ;com.autoregister_typelib = true 1720 | 1721 | ; register constants casesensitive 1722 | ; http://php.net/com.autoregister-casesensitive 1723 | ;com.autoregister_casesensitive = false 1724 | 1725 | ; show warnings on duplicate constant registrations 1726 | ; http://php.net/com.autoregister-verbose 1727 | ;com.autoregister_verbose = true 1728 | 1729 | ; The default character set code-page to use when passing strings to and from COM objects. 1730 | ; Default: system ANSI code page 1731 | ;com.code_page= 1732 | 1733 | [mbstring] 1734 | ; language for internal character representation. 1735 | ; This affects mb_send_mail() and mbstrig.detect_order. 1736 | ; http://php.net/mbstring.language 1737 | ;mbstring.language = Japanese 1738 | 1739 | ; Use of this INI entry is deprecated, use global internal_encoding instead. 1740 | ; internal/script encoding. 1741 | ; Some encoding cannot work as internal encoding. (e.g. SJIS, BIG5, ISO-2022-*) 1742 | ; If empty, default_charset or internal_encoding or iconv.internal_encoding is used. 1743 | ; The precedence is: default_charset < internal_encoding < iconv.internal_encoding 1744 | ;mbstring.internal_encoding = 1745 | 1746 | ; Use of this INI entry is deprecated, use global input_encoding instead. 1747 | ; http input encoding. 1748 | ; mbstring.encoding_traslation = On is needed to use this setting. 1749 | ; If empty, default_charset or input_encoding or mbstring.input is used. 1750 | ; The precedence is: default_charset < intput_encoding < mbsting.http_input 1751 | ; http://php.net/mbstring.http-input 1752 | ;mbstring.http_input = 1753 | 1754 | ; Use of this INI entry is deprecated, use global output_encoding instead. 1755 | ; http output encoding. 1756 | ; mb_output_handler must be registered as output buffer to function. 1757 | ; If empty, default_charset or output_encoding or mbstring.http_output is used. 1758 | ; The precedence is: default_charset < output_encoding < mbstring.http_output 1759 | ; To use an output encoding conversion, mbstring's output handler must be set 1760 | ; otherwise output encoding conversion cannot be performed. 1761 | ; http://php.net/mbstring.http-output 1762 | ;mbstring.http_output = 1763 | 1764 | ; enable automatic encoding translation according to 1765 | ; mbstring.internal_encoding setting. Input chars are 1766 | ; converted to internal encoding by setting this to On. 1767 | ; Note: Do _not_ use automatic encoding translation for 1768 | ; portable libs/applications. 1769 | ; http://php.net/mbstring.encoding-translation 1770 | ;mbstring.encoding_translation = Off 1771 | 1772 | ; automatic encoding detection order. 1773 | ; "auto" detect order is changed according to mbstring.language 1774 | ; http://php.net/mbstring.detect-order 1775 | ;mbstring.detect_order = auto 1776 | 1777 | ; substitute_character used when character cannot be converted 1778 | ; one from another 1779 | ; http://php.net/mbstring.substitute-character 1780 | ;mbstring.substitute_character = none 1781 | 1782 | ; overload(replace) single byte functions by mbstring functions. 1783 | ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), 1784 | ; etc. Possible values are 0,1,2,4 or combination of them. 1785 | ; For example, 7 for overload everything. 1786 | ; 0: No overload 1787 | ; 1: Overload mail() function 1788 | ; 2: Overload str*() functions 1789 | ; 4: Overload ereg*() functions 1790 | ; http://php.net/mbstring.func-overload 1791 | ;mbstring.func_overload = 0 1792 | 1793 | ; enable strict encoding detection. 1794 | ; Default: Off 1795 | ;mbstring.strict_detection = On 1796 | 1797 | ; This directive specifies the regex pattern of content types for which mb_output_handler() 1798 | ; is activated. 1799 | ; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml) 1800 | ;mbstring.http_output_conv_mimetype= 1801 | 1802 | [gd] 1803 | ; Tell the jpeg decode to ignore warnings and try to create 1804 | ; a gd image. The warning will then be displayed as notices 1805 | ; disabled by default 1806 | ; http://php.net/gd.jpeg-ignore-warning 1807 | ;gd.jpeg_ignore_warning = 0 1808 | 1809 | [exif] 1810 | ; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. 1811 | ; With mbstring support this will automatically be converted into the encoding 1812 | ; given by corresponding encode setting. When empty mbstring.internal_encoding 1813 | ; is used. For the decode settings you can distinguish between motorola and 1814 | ; intel byte order. A decode setting cannot be empty. 1815 | ; http://php.net/exif.encode-unicode 1816 | ;exif.encode_unicode = ISO-8859-15 1817 | 1818 | ; http://php.net/exif.decode-unicode-motorola 1819 | ;exif.decode_unicode_motorola = UCS-2BE 1820 | 1821 | ; http://php.net/exif.decode-unicode-intel 1822 | ;exif.decode_unicode_intel = UCS-2LE 1823 | 1824 | ; http://php.net/exif.encode-jis 1825 | ;exif.encode_jis = 1826 | 1827 | ; http://php.net/exif.decode-jis-motorola 1828 | ;exif.decode_jis_motorola = JIS 1829 | 1830 | ; http://php.net/exif.decode-jis-intel 1831 | ;exif.decode_jis_intel = JIS 1832 | 1833 | [Tidy] 1834 | ; The path to a default tidy configuration file to use when using tidy 1835 | ; http://php.net/tidy.default-config 1836 | ;tidy.default_config = /usr/local/lib/php/default.tcfg 1837 | 1838 | ; Should tidy clean and repair output automatically? 1839 | ; WARNING: Do not use this option if you are generating non-html content 1840 | ; such as dynamic images 1841 | ; http://php.net/tidy.clean-output 1842 | tidy.clean_output = Off 1843 | 1844 | [soap] 1845 | ; Enables or disables WSDL caching feature. 1846 | ; http://php.net/soap.wsdl-cache-enabled 1847 | soap.wsdl_cache_enabled = 1 1848 | 1849 | ; Sets the directory name where SOAP extension will put cache files. 1850 | ; http://php.net/soap.wsdl-cache-dir 1851 | soap.wsdl_cache_dir = "/tmp" 1852 | 1853 | ; (time to live) Sets the number of second while cached file will be used 1854 | ; instead of original one. 1855 | ; http://php.net/soap.wsdl-cache-ttl 1856 | soap.wsdl_cache_ttl = 86400 1857 | 1858 | ; Sets the size of the cache limit. (Max. number of WSDL files to cache) 1859 | soap.wsdl_cache_limit = 5 1860 | 1861 | [sysvshm] 1862 | ; A default size of the shared memory segment 1863 | ;sysvshm.init_mem = 10000 1864 | 1865 | [ldap] 1866 | ; Sets the maximum number of open links or -1 for unlimited. 1867 | ldap.max_links = -1 1868 | 1869 | [mcrypt] 1870 | ; For more information about mcrypt settings see http://php.net/mcrypt-module-open 1871 | 1872 | ; Directory where to load mcrypt algorithms 1873 | ; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt) 1874 | ;mcrypt.algorithms_dir= 1875 | 1876 | ; Directory where to load mcrypt modes 1877 | ; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt) 1878 | ;mcrypt.modes_dir= 1879 | 1880 | [dba] 1881 | ;dba.default_handler= 1882 | 1883 | [opcache] 1884 | 1885 | ; Determines if Zend OPCache is enabled 1886 | opcache.enable = 1 1887 | 1888 | ; Determines if Zend OPCache is enabled for the CLI version of PHP 1889 | opcache.enable_cli = 1 1890 | 1891 | ; The OPcache shared memory storage size. 1892 | ;opcache.memory_consumption=64 1893 | 1894 | ; The amount of memory for interned strings in Mbytes. 1895 | ;opcache.interned_strings_buffer=4 1896 | 1897 | ; The maximum number of keys (scripts) in the OPcache hash table. 1898 | ; Only numbers between 200 and 100000 are allowed. 1899 | ;opcache.max_accelerated_files=2000 1900 | 1901 | ; The maximum percentage of "wasted" memory until a restart is scheduled. 1902 | ;opcache.max_wasted_percentage=5 1903 | 1904 | ; When this directive is enabled, the OPcache appends the current working 1905 | ; directory to the script key, thus eliminating possible collisions between 1906 | ; files with the same name (basename). Disabling the directive improves 1907 | ; performance, but may break existing applications. 1908 | opcache.use_cwd = 0 1909 | 1910 | ; When disabled, you must reset the OPcache manually or restart the 1911 | ; webserver for changes to the filesystem to take effect. 1912 | opcache.validate_timestamps = ${OPCACHE_VALIDATE_TIMESTAMPS} 1913 | 1914 | ; How often (in seconds) to check file timestamps for changes to the shared 1915 | ; memory storage allocation. ("1" means validate once per second, but only 1916 | ; once per request. "0" means always validate) 1917 | ;opcache.revalidate_freq=2 1918 | 1919 | ; Enables or disables file search in include_path optimization 1920 | ;opcache.revalidate_path=0 1921 | 1922 | ; If disabled, all PHPDoc comments are dropped from the code to reduce the 1923 | ; size of the optimized code. 1924 | opcache.save_comments = ${OPCACHE_SAVE_COMMENTS} 1925 | 1926 | ; If disabled, PHPDoc comments are not loaded from SHM, so "Doc Comments" 1927 | ; may be always stored (save_comments=1), but not loaded by applications 1928 | ; that don't need them anyway. 1929 | ;opcache.load_comments=1 1930 | 1931 | ; If enabled, a fast shutdown sequence is used for the accelerated code 1932 | ;opcache.fast_shutdown=0 1933 | 1934 | ; Allow file existence override (file_exists, etc.) performance feature. 1935 | opcache.enable_file_override = 1 1936 | opcache.file_update_protection = 0 1937 | 1938 | opcache.file_cache = /tmp/ 1939 | opcache.file_cache_only = 0 1940 | opcache.file_cache_consistency_checks = 0 1941 | opcache.huge_code_pages = 1 1942 | zend_optimizerplus.use_cwd = 0 1943 | zend_optimizerplus.enable_file_override = 1 1944 | 1945 | ; A bitmask, where each bit enables or disables the appropriate OPcache 1946 | ; passes 1947 | ;opcache.optimization_level=0xffffffff 1948 | 1949 | ;opcache.inherited_hack=1 1950 | ;opcache.dups_fix=0 1951 | 1952 | ; The location of the OPcache blacklist file (wildcards allowed). 1953 | ; Each OPcache blacklist file is a text file that holds the names of files 1954 | ; that should not be accelerated. The file format is to add each filename 1955 | ; to a new line. The filename may be a full path or just a file prefix 1956 | ; (i.e., /var/www/x blacklists all the files and directories in /var/www 1957 | ; that start with 'x'). Line starting with a ; are ignored (comments). 1958 | ;opcache.blacklist_filename= 1959 | 1960 | ; Allows exclusion of large files from being cached. By default all files 1961 | ; are cached. 1962 | ;opcache.max_file_size=0 1963 | 1964 | ; Check the cache checksum each N requests. 1965 | ; The default value of "0" means that the checks are disabled. 1966 | ;opcache.consistency_checks=0 1967 | 1968 | ; How long to wait (in seconds) for a scheduled restart to begin if the cache 1969 | ; is not being accessed. 1970 | ;opcache.force_restart_timeout=180 1971 | 1972 | ; OPcache error_log file name. Empty string assumes "stderr". 1973 | ;opcache.error_log= 1974 | 1975 | ; All OPcache errors go to the Web server log. 1976 | ; By default, only fatal errors (level 0) or errors (level 1) are logged. 1977 | ; You can also enable warnings (level 2), info messages (level 3) or 1978 | ; debug messages (level 4). 1979 | ;opcache.log_verbosity_level=1 1980 | 1981 | ; Preferred Shared Memory back-end. Leave empty and let the system decide. 1982 | ;opcache.preferred_memory_model= 1983 | 1984 | ; Protect the shared memory from unexpected writing during script execution. 1985 | ; Useful for internal debugging only. 1986 | ;opcache.protect_memory=0 1987 | 1988 | [curl] 1989 | ; A default value for the CURLOPT_CAINFO option. This is required to be an 1990 | ; absolute path. 1991 | ;curl.cainfo = 1992 | 1993 | [openssl] 1994 | ; The location of a Certificate Authority (CA) file on the local filesystem 1995 | ; to use when verifying the identity of SSL/TLS peers. Most users should 1996 | ; not specify a value for this directive as PHP will attempt to use the 1997 | ; OS-managed cert stores in its absence. If specified, this value may still 1998 | ; be overridden on a per-stream basis via the "cafile" SSL stream context 1999 | ; option. 2000 | ;openssl.cafile= 2001 | 2002 | ; If openssl.cafile is not specified or if the CA file is not found, the 2003 | ; directory pointed to by openssl.capath is searched for a suitable 2004 | ; certificate. This value must be a correctly hashed certificate directory. 2005 | ; Most users should not specify a value for this directive as PHP will 2006 | ; attempt to use the OS-managed cert stores in its absence. If specified, 2007 | ; this value may still be overridden on a per-stream basis via the "capath" 2008 | ; SSL stream context option. 2009 | ;openssl.capath= 2010 | 2011 | ; Local Variables: 2012 | ; tab-width: 4 2013 | ; End: 2014 | 2015 | extension = redis.so 2016 | extension = stackdriver_debugger.so 2017 | extension = swoole.so 2018 | extension = decimal.so 2019 | -------------------------------------------------------------------------------- /schedule.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | loop() { 4 | local now; 5 | 6 | while true; do 7 | now=$(date "+%S") 8 | now=${now#0} 9 | 10 | if [[ "$now" -le 10 ]]; then 11 | "$@" & 12 | fi 13 | 14 | sleep $((61-now)) 15 | done 16 | } 17 | 18 | if [[ "$APP_ENV" = "production" ]]; then 19 | php artisan config:clear 20 | php artisan config:cache 21 | php artisan route:clear 22 | php artisan route:cache 23 | chown -R www-data.www-data ./ 24 | fi 25 | 26 | loop php artisan schedule:run 27 | -------------------------------------------------------------------------------- /supervisord.conf: -------------------------------------------------------------------------------- 1 | ; Copyright 2015 Google Inc. 2 | ; 3 | ; Licensed under the Apache License, Version 2.0 (the "License"); 4 | ; you may not use this file except in compliance with the License. 5 | ; You may obtain a copy of the License at 6 | ; 7 | ; http://www.apache.org/licenses/LICENSE-2.0 8 | ; 9 | ; Unless required by applicable law or agreed to in writing, software 10 | ; distributed under the License is distributed on an "AS IS" BASIS, 11 | ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | ; See the License for the specific language governing permissions and 13 | ; limitations under the License. 14 | 15 | [supervisord] 16 | nodaemon = true 17 | logfile = /dev/null 18 | logfile_maxbytes = 0 19 | pidfile = /var/run/supervisord.pid 20 | 21 | [program:schedule] 22 | command = bash %(ENV_APP_DIR)s/schedule.sh 23 | stdout_logfile = /dev/stdout 24 | stdout_logfile_maxbytes=0 25 | stderr_logfile = /dev/stderr 26 | stderr_logfile_maxbytes=0 27 | user = root 28 | autostart = true 29 | autorestart = true 30 | priority = 500 31 | 32 | [program:swoole] 33 | command = php %(ENV_APP_DIR)s/artisan swoole:http start 34 | stdout_logfile = /dev/stdout 35 | stdout_logfile_maxbytes = 0 36 | stderr_logfile = /dev/stderr 37 | stderr_logfile_maxbytes = 0 38 | user = root 39 | autostart = true 40 | autorestart = true 41 | priority = 1000 42 | 43 | # [program:php-fpm] 44 | # command = /opt/php/sbin/php-fpm -y /opt/php/etc/php-fpm.conf 45 | # stdout_logfile = /dev/stdout 46 | # stdout_logfile_maxbytes=0 47 | # stderr_logfile = /dev/stderr 48 | # stderr_logfile_maxbytes=0 49 | # user = root 50 | # autostart = true 51 | # autorestart = true 52 | # priority = 1000 53 | 54 | [program:nginx] 55 | command = /usr/sbin/nginx 56 | stdout_logfile = /dev/stdout 57 | stdout_logfile_maxbytes = 0 58 | stderr_logfile = /dev/stderr 59 | stderr_logfile_maxbytes = 0 60 | user = root 61 | autostart = true 62 | autorestart = true 63 | priority = 2000 64 | 65 | [program:horizon] 66 | command = php %(ENV_APP_DIR)s/artisan horizon 67 | stdout_logfile = /dev/stdout 68 | stdout_logfile_maxbytes = 0 69 | stderr_logfile = /dev/stderr 70 | stderr_logfile_maxbytes = 0 71 | user = root 72 | autostart = true 73 | autorestart = true 74 | priority = 3000 75 | 76 | # [program:websockets] 77 | # command = php %(ENV_APP_DIR)s/artisan websockets:serve 78 | # stdout_logfile = /dev/stdout 79 | # stdout_logfile_maxbytes = 0 80 | # stderr_logfile = /dev/stderr 81 | # stderr_logfile_maxbytes = 0 82 | # user = root 83 | # autostart = true 84 | # autorestart = true 85 | # priority = 4000 86 | 87 | [include] 88 | files = /etc/supervisor/conf.d/*.conf 89 | --------------------------------------------------------------------------------