PHP Settings

General Options

 

**No Cache** Whether caching is required on browser
**Multi-Language** Enable multi-language project. If enabled, a combobox will appear on the top of the generated scripts for user to select language. See Tools for selecting languages for the multi-language project.
Important
  1. Multi-Language project must use utf-8 encoding. The charset of the project must be "utf-8".
  2. The data in your database must be stored in unicode, otherwise your data will not be displayed properly.
**Default Language** Default language of the project. It must be compatible with Charset (see HTML Settings). Default is "en-US".

There is always one default language for a project. Only the English language file (english.en-US.xml) is shipped with PHPMaker. If your project is single language but you use another language, create a language file for your language (see Making Language Files), put it in the "languages" subfolder under the AppData folder (i.e. C:\Users\\AppData\Roaming\PHPMaker2025\languages) and then select your default language using this combobox.

If you enable Multi-Language, you must select one of the selected languages as the default language.

**File Upload**

Upload folder - The global folder where the uploaded files resides. If you do not enter a specific folder for a file upload field in the Edit Tag panel of the Field Setup page, all the uploaded files will be put in this folder.

Notes
  1. Always specify an upload folder if you allow file upload. This folder is used as the root folder of temporary folders for file upload fields during Add/Edit. It is also used as the root folder of the user files folder of TinyMCE.
  2. Unlike the field specific upload folder setting (which is a PHP expression), this field specific setting must be a constant string (without double quotes). If you want dynamic upload folders for different fields, specify upload folder for each field (see Field Setup).
  3. The path is relative to project folder. Use slashes "/" as path delimiter, no leading slash. e.g. If the project folder of your website is D:\websites\demo and you enter "uploads/" in this textbox, the folder for the uploaded files will be D:\websites\demo\uploads. If for some reasons you must use another absolute path, use the Advanced Setting File upload path for temporary files.
  4. If you want to use remote folders (e.g. AWS S3, Google Cloud Storage, Azure Blob Storage), you need to specify [Filesystem URI](filestorage.html?id=filesystem-uri), e.g. you can enter "s3://my-bucket/" (WITHOUT quotes and WITH trailing slash). (In this special case, the path is not relative to project folder.) To use AWS S3, Google Cloud Storage, Azure Blob Storage, read [File Storage](filestorage.html) for details..
  5. Even you use remote upload folders, you still need a local upload folder on your web server for temporary files, you can specify the folder by the advanced settings [File upload path for temporary files](tools.html?id=file-upload-path-for-temporary-files).
  6. Make sure that the web server user have FULL read/write access to the folder. If you use S3 bucket, note that the uploaded files in the bucket are not public by default. Remember to configure bucket permissions so that the uploaded files are accessible by users.

Max File Size - Maximum file upload size in bytes. If <= 0, there is no checking on file size.

Notes File upload also depends on your PHP, web server and database configuration:

  1. PHP - Check your php.ini, related configurations are file_uploads, upload_max_filesize, upload_tmp_dir, post_max_size, max_input_time, memory_limit, and max_execution_time directives in php.ini.
  2. Apache - If you use Apache web server, check LimitRequestBody directive.
  3. MySQL - Check the max_allowed_packet setting in your MySQL configuration.

Allowed file types - The allowed file extensions of the uploaded files. Separate the file extensions (without ".") by comma without space, e.g. gif,png,png. If blank, all file types are allowed.

Delete file on update/delete - Option to delete the uploaded file when the field value is replaced, removed or if the record is deleted.

Note If Delete file on update/delete is enabled, the uploaded file will be deleted. If the deleted record is a copied record, deleting the uploaded files will affect the original record. To prevent such possible problem, enable Advanced Setting Create upload file on copy (see Advanced Settings) to duplicate the uploaded file when copying a record.
**Logging**

You can choose to log activities in a log file or in a database table.

Log file folder - The folder where the audit trail log file resides.

Notes
  1. ALWAYS specify a log file folder, it is not only used by log files but also used by cache files.
  2. Make sure that the web server user have read/write access to the folder. Unlike upload folder, this folder should be local. AWS S3 bucket should NOT be used.
  3. The path is relative to project folder. Use slashes "/" as path delimiter, no leading slash. e.g. If the project folder of your website is D:\websites\myproject and you enter "logs/" in this textbox, the folder for the log file will be D:\websites\myproject\logs.
  4. From v2021, the log file names are named as log-yyyy-mm-dd.log and the data in the log file is comma separated.
Audit Trail

Use database table - Log the activities in the specified table instead of log file. The table must have the following fields: (actual data types depend on database type)

  • DateTime (DateTime)
  • Script (Varchar)
  • User (Varchar)
  • Action (Varchar)
  • Table (Varchar)
  • Field (Varchar)
  • KeyValue (Long Varchar)
  • OldValue (Long Varchar)
  • NewValue (Long Varchar)

You can create the database yourselves and select the table in the combobox, then click the [...] button to select the fields in your table. Alternatively, if you have not created the table yet, you can click Create Table to create the table and setup the table/fields.

Track login/logout activities - If security feature is enabled, login/logout activities will also be logged.

**Validation**

Server-side - Enable server-side form validation.

Client-side (JavaScript) - Enable client-side form validation.

Note If the available validation format in the Edit Tag panel (see Field Setup) does not fulfil your requirements, you can use your own server-side and/or client-side validation code using Server Event and Client Scripts.

**Web Push**

Use Web Push Notifications - Enable the Web Push Notificaiton feature.
Allow anonymous users - Enable subscriptions for anonymous user.
Subscriptions table - The table to store the subscription data. The table must contain the following fields: (actual data types depending on database type)

  • ID (Integer) - Subscription id, primary key of the table, autoincrement
  • User (Varchar) - Stores the subscriber's User ID
  • Endpoint (Long Varchar) - Stores the end point of the push notification
  • PublicKey (Varchar) - Stores the public key for the push notication
  • AuthenticationToken (Varchar) - Stores the authentication token of the push notification
  • ContentEncoding (Varchar) - Stores the content encoding of the push notification

You can create the database yourselves and select the table in the combobox, then click the [...] button to select the fields in your table. Alternatively, if you have not created the table yet, you can click Create Table button to create the table and setup the table/fields.

Server public key - Web Push VAPID public key
Server private key - Web Push VAPID private key

You can create the Server public/private key pairs by clicking the Generate button. Note The Generate button is only enabled if both keys are empty. If you want to generate again, clear both keys first.

Time limit - Time limit (in seconds) for sending the Web Push Notification

See Web Push Notification for more information.

 

Page Options (Global)

The following page options are global for all tables. If you want different settings for a particular table, you can use table-specific options available in the Table Setup page.

 

**Records per page** Number of records to be displayed in the list page of all tables. If blank or 0, default setting of 20 will be used. Not for reports.
**Page sizes (records)** Number of records to be selected by user. Comma separated values, e.g. 10,20,50,ALL. Not for reports.
Note "ALL" (without quotes) is supported, other values must be integers.
**Groups per page** Number of groups to be displayed in reports. If blank or 0, default setting of 3 will be used. For reports only.
**Page sizes (groups)** Number of groups to be selected by user. Comma separated values, e.g. 1,2,3,5,ALL. For reports only.
Note "ALL" (without quotes) is supported, other values must be integers.
**Paging section style** "NumericPages" or "NextPrev"
**Sort type** None, Single column or Multiple column.
Note If Multiple column is selected, the List pages support multiple column sorting by Ctrl-clicking the table header and clear sorting by Shift-clicking any table header.
**Multiple column** Show multiple records per row. Default is 0. This feature will only take effect if the value is > 0. Possible values: 1, 2, 3, 4, 6, 12
**Paging section at top** Show the paging section at top (also applies to View page)
**Paging section at bottom** Show the paging section at bottom (also applies to View page)
**Paging section in View page** Show paging section in View page also
**Paging section in Edit page** Show paging section in Edit page also
**Multi-Delete** Show checkboxes in the list page for selecting multiple records to delete
**Links on left side** Show the links in record row on the left instead of right
**Use buttons as links** Show the links in record row as a button group instead of individual icons or links.
**Use button dropdown for links** Show the links in record row as a button with dropdown menu instead of individual icons or links.
**Use button dropdown in paging section** Show the links in paging section as buttons with dropdown menu instead of individual links.
**Export** Enable export in List/Report page - allow export in List/Report pages

Enable export in View page - allow export in View pages also

Use button dropdown - show the export links as a button with dropdown menu. Default is showing the export links as a row of icons.

Print/CSV/HTML/Excel/Word/XML/PDF/Email - Records can be exported to Print (printer-friendly), CSV, HTML, Excel, Word, XML, PDF format or sent as HTML email content.

Note The fields in printer friendly version are same as in List/View page, while the fields in other format are determined by the Export setting of the field in Field Setup page.

Export type - Determines which records to export. The follows are supported:

  • All Pages - Records in all pages are exported
  • Current Page - All records in current page are exported
  • Selected Record - If selected, a checkbox will be displayed in each row for selection. Only selected records in the current page are exported. (Selecting records in different pages is not allowed.) To select records primary key is required, Current Page export type will be used for tables without primary key. Not supported by reports.

**Export log table** - For use with Export API which allows you to export snapshots from tables/views/reports and save them as physical files on server so they can be retrieved later. See [Export API](export.html) for details.

Notes
  1. Binary data (BLOB fields) cannot be exported (except jpg, gif and png images).
  2. Export to HTML/CSV/XML are not applicable to reports.
  3. Export to Word/Excel works by exporting data in HTML format for Word/Excel to convert/import, the exported file is not native .doc/.xls format. However, registered users can use the PhpSpreadsheet/PHPWord extension which outputs native Excel/Word file format.
  4. Images cannot be exported to Word/Excel/CSV/XML. However, registered users can use the PhpSpreadsheet/PHPWord extension which outputs images also.
  5. Export to PDF (for all users) and PhpSpreadsheet/PHPWord extensions (for registered users) support images (jpg, gif and png only), but a temporary folder is required during export, the extensions use the Upload folder (see File Upload above) because write permission for the folder should be already setup properly. Even you do not use file upload to folder, if you want to export with images, make sure you still specify an upload folder and set up write permission.
  6. Similarly, a temporary folder is required when exporting charts with report and the Upload folder will be used.
Notes (Export to PDF)
  1. Dompdf is not particularly tolerant to poorly-formed HTML input.
  2. Large files or large tables can take a while to render.
  3. Requires a lot of memory.
  4. The extension performs best if you are using non-unicode alphanumerical characters (e.g. iso-8859-1) only. If you use unicode, configure advanced settings for the extension, read the note in the extension setup page (see Extensions) for more information.
  5. By default export is only enabled in View page. If you want to enable it in the List page also (the number of records to be exported is not large), you can set the advanced settings of the extension (see Extensions).
Features Supported by Export Types

  HTML/Print PDF Email Excel Word PhpSpreadsheet (for registered users) PHPWord (for registered users)
**Format** HTML PDF HTML HTML (NOT native) HTML (NOT native) Excel 5/2007 (native) Word 2007 only (native)
**Images**
**Charts (as images)**
**Custom Template**

(Partially supported by Summary reports)

(Partially supported by Summary reports)

 

Email Settings

PHPMaker supports many features that can send emails. If you use these features, you'll need to specify a SMTP server.

**SMTP server** The host name or IP of the SMTP server.
Note Some servers do not support "localhost" as SMTP server, in such case you need to specify a valid SMTP server in the network.
**SMTP server port** Port number of SMTP server. Default is 25.
**SMTP server username** User name for SMTP server authentication. If your SMTP server does not require authentication, leave it blank.
**SMTP server password** Password for SMTP server authentication. If your SMTP server does not require authentication, leave it blank.
**Sender (Email address)** Email address of the sender of all emails
**Recipient (Email address)** Email address of the recipient(s) for notification emails when a record is added/edited/deleted (if enabled, see Table Setup). If there are multiple recipients, separate them by comma.
**Security** Protocol used by the SMTP server. Possible values are: SSL or TLS.
Notes
  1. Leave this setting empty if your SMTP server does not use SSL/TLS.
  2. If you enable this, make sure you have enabled OpenSSL support in your php.ini, see [Some Important Settings in php.ini](phpmysql.html?id=some-important-settings-in-php-ini).

###### Using 3rd Party Transport Since v2025, PHPMaker uses [Symfony Mailer](https://symfony.com/doc/current/mailer.html) instead of PHPMailer. Emails are delivered via a "transport". Out of the box, PHPMaker uses the built-in "smtp" transport to deliver emails over SMTP by above settings. However, Symfony Mailer also support various other 3rd party transports. Instead of using SMTP server, you can send emails via a third-party provider, see [Using a 3rd Party Transport](https://symfony.com/doc/current/mailer.html#using-a-3rd-party-transport) for details. If you want to 3rd party transport, you can: 1. Enter the required Composer package (e.g. ``symfony/amazon-mailer``) under [Composer Packages](tools.html?id=composer-packages) 1. Enter your DSN to the advanced setting [Mailer DSN](tools.html?id=mailer-dsn), e.g. ``ses+smtp://USERNAME:PASSWORD@default?region=REGION`` ###### Overriding Default SMTP Authenticators By default, SMTP transports will try to login using all authentication methods available on the SMTP server, one after the other. In some cases, you may want to redefine the supported authentication methods to ensure that the preferred method will be used first. This can be done by setting ``Config('MAILER_AUTHENTICATORS')`` in [Global Code](customscripts.html?id=global-code), e.g. if your transport supports XOAUTH2 and you prefer to use it only: ###### Using Gmail If you want to use Google Gmail, you must have a Google Account with 2-Step-Verification (2FA) enabled and you must use [App Password](https://support.google.com/accounts/answer/185833) to authenticate. Also note that Google revokes your App Passwords when you change your Google Account password and then you need to generate a new one. Using other methods (like XOAUTH2 or the Gmail API) are NOT supported currently. You should use Gmail for testing purposes only and use a real provider in production. If you must use Gmail, you can: 1. Enter the required Composer package (e.g. ``symfony/google-mailer``) under [Composer Packages](tools.html?id=composer-packages) 1. Enter your DSN to the advanced setting [Mailer DSN](tools.html?id=mailer-dsn), e.g. ``gmail+smtp://USERNAME:APP-PASSWORD@default`` ###### Using PHPMailer Symfony Mailer does not support PHPMailer. However, PHPMaker includes a PHPMailer transport to bridge the two components. If you still need to use PHPMailer for some reasons, you can enable the advanced setting [Use PHPMailer](tools.html?id=use-phpmailer). For example, if you want to send email via Gmail using XOAUTH2 authentication (see [Using Gmail with XOAUTH2](https://github.com/PHPMailer/PHPMailer/wiki/Using-Gmail-with-XOAUTH2) and the [example](https://github.com/PHPMailer/PHPMailer/blob/master/examples/gmail_xoauth.phps)), you can: 1. Enter the required Composer packages ``league/oauth2-client`` and ``league/oauth2-google`` under [Composer Packages](tools.html?id=composer-packages), 1. Create the OAuth2 token provider in [Global Code](customscripts.html?id=global-code) and set it to ``Config('PHPMAILER_OAUTH')``, e.g.

 

 ©2002-2025 e.World Technology Ltd. All rights reserved.