The Movable Type User Manual

NOTE: This documentation is for Movable Type 3.2. If you are using a newer version, please see the documentation for Movable type 3.3x or Movable Type Enterprise.

« Commenter | Up | E: Archive File Path Specifiers »

Chapter D: Configuration Directives

In this section:


This section of the appendix details all configuration directives that can be defined in mt-config.cgi. Through use of these directives, you can control numerous aspects of the system.

Except for those which define things specific to your system (e.g. CGIPath and your database settings), all of them have defaults set by Movable Type. This means that not every directive will appear in mt-config.cgi. If you wish to override the default for a setting which does not appear in the file, simply add it and the desired value to your mt-config.cgi.

The CGIPath configuration directive is a required setting which defines the URL path to your Movable Type directory and is used in the construction of links to any of the various scripts which handle the system's public interfaces (e.g. comments, TrackBacks, search, etc).

This value can be output through your templates using the MTCGIPath template tag. You will see it used in the default templates in the comment and search forms, the RSD index template and others. The system also uses it internally in a number of ways.

Example

If you normally access Movable Type with the following URL:

http://www.example.com/cgi-bin/mt/mt.cgi

Then you would put this in your mt-config.cgi:

CGIPath http://www.example.com/cgi-bin/mt/

IMPORTANT:

For added security, Six Apart recommends the use of the AdminCGIPath configuration directive for defining the URL prefix to Movable Type's administrative scripts such as mt.cgi.

The AdminCGIPath configuration directive is the administrative analog to the CGIPath directive and allows for a distinct URL path to be used for access to the administrative interface and scripts (e.g. mt.cgi).

Its use is optional since the CGIPath setting is used in its absence. However, for added security, Six Apart recommends use of this directive in combination with SSL (via https) in order to provide encryption/authentication of all administrative requests.

The value of this setting can be included in a template via the MTAdminCGIPath template tag.

Examples

In your mt-config.cgi, the following (without AdminCGIPath) would be used for all links to Movable Type scripts, public or private:

CGIPath http://www.example.com/path/to/mt/

The following, in addition to the CGIPath setting above, would preferentially use the admin subdomain of example.com for accessing the administrative scripts. All public scripts would still use the CGIPath setting.

AdminCGIPath http://admin.example.com/path/to/mt/

The following, in addition to the CGIPath setting above, would use HTTP protocol for the public interface scripts and HTTPS for the administrative scripts. You would, of course, need to enable SSL on your server before this will work.

AdminCGIPath https://www.example.com/path/to/mt/

In this case, you will also need to set your StaticWebPath to a relative value in order to avoid insecure content browser warnings. For example, instead of:

StaticWebPath http://www.example.com/path/to/mt-static/

You can use:

StaticWebPath /path/to/mt-static/

Or even:

StaticWebPath //www.example.com/path/to/mt-static/

Related

The filesystem path to the db directory, where your MT database files are stored, if you're using the Berkeley DB data storage option.

Default value: ./db

Example:

    DataSource ./db

If you place all of your MT files in a cgi-bin directory, you will need to situate the static files from mt-static elsewhere, so that the webserver will not try to execute them.

Default value: none

Example:

    StaticWebPath http://www.example.com/path/to/static-files/

The file system path to the tmpl directory, which contains the front-end templates used by the Movable Type application.

Default value: ./tmpl

Example:

    TemplatePath ./tmpl

If you would rather use SMTP than sendmail, you should set the MailTransfer config setting to 'smtp' (as below). Possible values for MailTransfer are: smtp, sendmail, and debug (which just writes out mail messages to STDERR, for debugging purposes).

Default value: sendmail

Example:

    MailTransfer smtp

By default, Movable Type looks for sendmail in three locations: /usr/lib/sendmail, /usr/sbin/sendmail, and /usr/ucblib/sendmail. If your sendmail is in a different location, you can adjust the SendMailPath configuration setting.

Default value: any of the above

Example:

    SendMailPath /usr/sbin/sendmail

The address of your SMTP server, to be used along with MailTransfer when set to 'smtp.'

Default value: localhost

Example:

    SMTPServer smtp.example.com

By default, when writing to an output file, Movable Type will first write the data to a temp file, then rename that temp file. In the case that the process writing the data dies unexpectedly, this prevents the pages on your site from being erased. If you do not like this behavior (perhaps because it requires you to set directory permissions too liberally), you can use this directive to turn it off.

Default value: 0

Example:

    NoTempFiles 1

The URL used to send the XML-RPC weblogs.com ping.

Default value: http://rpc.weblogs.com/RPC2

Example:

    WeblogsPingURL http://some.alternate.weblogs.com.server/path/

The URL used to send the XML-RPC blo.gs ping.

Default value: http://ping.blo.gs/

Example:

    BlogsPingURL http://some.alternate.blo.gs.server/path/

The URL to which the update ping is sent when blog owners have chosen "Technorati" as a target for recently updated pings.

The URL used to send the XML-RPC ping to sixapart.com if you have a Recently Updated Key.

Default value: http://www.movabletype.org/update/

Example:

    MTPingURL http://some.alternate.movabletype.org.server/path/

When uploading files through Movable Type's upload mechanism, a ceiling is put on the size of the files that can be uploaded, to prevent denial-of-service attacks.

Default value: 1000000 (1MB)

Example:

    CGIMaxUpload 500000

When creating files and directories, Movable Type uses umask settings to control the permissions set on the files. If you are running under cgiwrap or suexec, you should use a value of 0022 for all of these settings.

Default values: 0111 (DBUmask, HTMLUmask, UploadUmask), 0000 (DirUmask)

Example:

    DBUmask 0022

When creating files and directories, Movable Type uses umask settings to control the permissions set on the files. If you are running under cgiwrap or suexec, you should use a value of 0022 for all of these settings.

Default values: 0111 (DBUmask, HTMLUmask, UploadUmask), 0000 (DirUmask)

Example:

    HTMLUmask 0022

When creating files and directories, Movable Type uses umask settings to control the permissions set on the files. If you are running under cgiwrap or suexec, you should use a value of 0022 for all of these settings.

Default values: 0111 (DBUmask, HTMLUmask, UploadUmask), 0000 (DirUmask)

Example:

    UploadUmask 0022

When creating files and directories, Movable Type uses umask settings to control the permissions set on the files. If you are running under cgiwrap or suexec, you should use a value of 0022 for all of these settings.

Default values: 0111 (DBUmask, HTMLUmask, UploadUmask), 0000 (DirUmask)

Example:

    DirUmask 0022

In addition to controlling permissions via umask settings, you can also use the HTMLPerms and UploadPerms settings to control the default permissions for files created by the system (either as output files or uploaded files). The only real use of this is to turn on the executable bit of files created by the system--for example, if MT is generating PHP files that need to have the executable bit turned on, you could set HTMLPerms to 0777.

  • Default value: 0666

Example:

HTMLPerms 0777

In addition to controlling permissions via umask settings, you can also use the HTMLPerms and UploadPerms settings to control the default permissions for files created by the system (either as output files or uploaded files). The only real use of this is to turn on the executable bit of files created by the system--for example, if MT is generating PHP files that need to have the executable bit turned on, you could set HTMLPerms to 0777.

  • Default value: 0666

Example:

UploadPerms 0777

When processing uploaded files, if Movable Type notices that the file you uploaded already exists, it will allow you to overwrite the original file by first asking for your confirmation. To do this, MT needs to write the uploaded data to a temporary file. That temporary file is stored in the directory specified by the TempDir setting.

Default value: /tmp

Example:

    TempDir /tmp/

When rebuilding individual archives, Movable Type splits up the rebuilding process into segments, where each segment consists of rebuilding N entries. The default value for N is 40, so by default, MT will rebuild 40 entries at a time, then move on to the next 40, etc. You can change that value globally here; for example, if you have a very stable server, you might wish to just get it all done in one batch.

Default value: 40

Example:

    EntriesPerRebuild 100

The filesystem path to the import directory, which is used when importing entries and comments into the system. import is the directory where the files to be imported are placed.

Default value: ./import

Example:

    ImportPath ./import

By default Movable Type uses Perl's flock() function to lock your databases while reading and writing. On systems using NFS-mounted directories, however, Perl's flock() may fail, unless the perl executable has been built to use fnctl(2) instead of flock(2); and even then, it is not certain that the locking will truly work.

Thus, if you have problems running Movable Type on systems using NFS, you can use the UseNFSSafeLocking directive to use simpler file locking that will work over NFS.

Default value: 0 (don't use NFS-safe locking)

Example:

    UseNFSSafeLocking 1

On some Windows systems, neither flock() nor link() are available, so you can't use the default flock() locking, nor can you use the NFS-safe locking. In such cases, you can turn on the NoLocking option. Note that you should ONLY do this if your system supports nothing else--it is a last resort, because it increases the likelihood of database corruption. However, if you are the only person using the system (for example, if this is your personal server), this should not be as much of an issue.

Default value: 0 (use locking)

Example:

    NoLocking 1

By default Movable Type uses the Perl module HTML::Entities to encode characters into HTML entities, provided that you have it. However, in some circumstances, even if you do, you may not wish to use it for encoding, if for example, if you are using a language that uses a different character encoding (Polish, Russian, etc). In that case, you should set the value of NoHTMLEntities to 1.

Default value: 0 (use HTML::Entities, if it's available)

Example:

    NoHTMLEntities 1

By default, when encoding data for XML Movable Type checks whether your data looks like it contains any HTML tags or other unsafe-for-XML data, and if so, it encloses your data in CDATA tags. Some news aggregators have trouble with combinations of CDATA with other data, though, so if this is causing a problem for you, you can use NoCDATA to encode any special characters into entities.

Default value: 0 (use CDATA)

Example:

    NoCDATA 1

When sending pings--either TrackBack pings or update pings--Movable Type sets a timeout on the ping, so that it doesn't take too long and appear to freeze up the system. You can override the default setting of 15 seconds by setting a different value with the PingTimeout directive. The value is assumed to be in seconds.

Default value: 15

Example:

    PingTimeout 5

By default, outgoing Trackback and update pings are sent to the internet using the default network interface card (NIC) on the server running Movable Type. In some rare cases, it may be necessary or desirable to have the outbound ping traffic sent over a different network interface card or network connection. In these situations, enter the IP address of the network interface card that should be used to send the outgoing ping notifications.

You may specify only the IP address (xxx.xxx.xxx.xxx) or an IP address and port number (xxx.xxx.xxx.xxx:#). If no port number is specified, the outgoing ping will be sent from the specified IP address using the next available port number. If a port is specified, the outgoing ping will be sent from the specified IP address AND port number. This is useful when you need a consistent source IP:port address for firewall filtering of outbound connections.

Don't specify a port unless it's absolutely necessary. If the port specified is already in use, the outgoing ping will fail without error.

Default value: none

Example:

    PingInterface 192.168.10.5
    PingInterface 192.168.10.5:8080

In some cases, a proxy server must be used to gain access to the internet if the computer Movable Type is running on is behind a firewall or on an internal private network. By setting PingProxy to the full URL address of your proxy server, Movable Type will route all Trackback and update pings through the proxy server specified.

Default value: none

Example:

    PingProxy http://192.168.10.5:3128

If PingProxy above is set, Movable Type will route Trackback and update pings through the specified proxy EXCEPT for pings destined for the domains listed in PingNoProxy.

Default value: localhost, 127.0.0.1

Example:

    PingNoProxy internal.lan, example.tld

Specifies the image toolkit used to create thumbnails from uploaded images. By default, the ImageMagick library and Image::Magick Perl module are used; if your system does not have these, you can use the NetPBM tools instead (assuming that your system has these tools installed). Possible values for this setting are ImageMagick or NetPBM.

Default value: ImageMagick

Example:

    ImageDriver NetPBM

By default, Movable Type looks for the NetPBM tools in three locations: /usr/local/netpbm/bin, /usr/local/bin, and /usr/bin. If your NetPBM tools are installed in a different location, you can adjust the NetPBMPath configuration setting. Note that this path should be the path to the directory containing the NetPBM binaries; for example, if your pnmscale binary is at /home/foo/netpbm/bin/pnmscale, you should set the value of NetPBMPath to /home/foo/netpbm/bin.

Default value: any of the above three locations

Example:

    NetPBMPath /home/foo/netpbm/bin

By default, the script that Movable Type uses for the administrative interface is called mt.cgi. In some situations--for example, if you are running MT under mod_perl, or if your server requires that your Perl scripts have the extension .pl--you may need different names for these scripts. You can set the names that will be used throughout the default templates and Movable Type code by changing these values.

Default value: mt.cgi

Example:

AdminScript mt.pl

See also:

By default, the script that Movable Type uses for comments is called mt-comments.cgi. In some situations--for example, if you are running MT under mod_perl, or if your server requires that your Perl scripts have the extension .pl--you may need different names for these scripts. You can set the names that will be used throughout the default templates and Movable Type code by changing these values.

Default value: mt-comments.cgi

Example:

CommentScript mt-comments.pl

See also:

By default, the script that Movable Type uses for TrackBacks is called mt-tb.cgi. In some situations--for example, if you are running MT under mod_perl, or if your server requires that your Perl scripts have the extension .pl--you may need different names for these scripts. You can set the names that will be used throughout the default templates and Movable Type code by changing these values.

Default value: mt-tb.cgi

Example:

TrackbackScript mt-tb.pl

See also:

By default, the script that Movable Type uses for the public search is called mt-search.cgi. In some situations--for example, if you are running MT under mod_perl, or if your server requires that your Perl scripts have the extension .pl--you may need different names for these scripts. You can set the names that will be used throughout the default templates and Movable Type code by changing these values.

Default value: mt.search.cgi

Example:

SearchScript mt-search.pl

See also:

By default, the script that Movable Type uses for XML-RPC is called mt-xmlrpc.cgi. In some situations--for example, if you are running MT under mod_perl, or if your server requires that your Perl scripts have the extension .pl--you may need different names for these scripts. You can set the names that will be used throughout the default templates and Movable Type code by changing these values.

Default value: mt-xmlrpc.cgi

Example:

XMLRPCScript mt-xmlrpc.pl

See also:

By default, the script that Movable Type uses for dynamic weblog view (a legacy developmental script from an early version of the software) is called mt-view.cgi. In some situations--for example, if you are running MT under mod_perl, or if your server requires that your Perl scripts have the extension .pl--you may need different names for these scripts. You can set the names that will be used throughout the default templates and Movable Type code by changing these values.

Default value: mt-view.cgi

Example:

ViewScript mt-view.pl

See also:

By default, the script that Movable Type uses for Atom is called mt-atom.cgi. In some situations--for example, if you are running MT under mod_perl, or if your server requires that your Perl scripts have the extension .pl--you may need different names for these scripts. You can set the names that will be used throughout the default templates and Movable Type code by changing these values.

Default value: mt-atom.cgi

Example:

AtomScript mt-atom.pl

See also:

By default, the character encoding sent in the HTTP headers when you are using the system corresponds to the language you have chosen as your "Preferred Language" in your user profile. If you would like to override that you can set PublishCharset to the character encoding to be used. Be aware, though, that this will override the setting for every user and every weblog in this MT installation. An example encoding might be Shift_JIS.

Default value: encoding corresponding to Preferred Language

Example:

    PublishCharset Shift_JIS

"Safe mode" enables certain warnings about security and other issues, and turns off some small features and capabilities (for example, linking templates to files with .cgi and other extensions). Safe mode is on by default; you can turn it off by setting SafeMode to 0.

Default value: 1

Example:

    SafeMode 0

Movable Type has a sanitize function that is automatically run against all comments and TrackBacks submitted to your blog and also any content produced by a template tag with the sanitize attribute defined (see Global Filters for more details).

This is done to remove any code (HTML or otherwise) that could compromise the security of your site. The function works by only allowing certain HTML tags defined by this setting. Any other tags, and all processing instructions (PHP or Javascript, for example) are stripped.

By default, Sanitize is turned on automatically for the following tags:

  • MTCommentAuthor
  • MTCommentEmail
  • MTCommentURL
  • MTCommentBody
  • MTPingTitle
  • MTPingURL
  • MTPingBlogName
  • MTPingExcerpt

If you want to turn off sanitize for one of these tags, you can use the sanitize attribute:

<MTPingTitle sanitize="0">

In addition, the sanitization process adds closing tags for any tags left open in the sanitized text. For example, if a visitor to your site opens a <b> tag and forgets the close it, the sanitize process will add a </b> tag in the most appropriate place it can find.

This configuration setting defines the default choice for all weblogs. It can be overridden on a per-weblog basis through use of the "Limit HTML tags" option on the weblog's General setting page. More discussion about the sanitize function can be found in the article entitled "Limiting HTML in Comments".

Default value:

a href,b,i,br/,p,strong,em,ul,ol,li,blockquote,pre

Example:

GlobalSanitizeSpec blockquote,div

Syntax:

The sanitize spec consists of HTML tag names separated by commas. For each tag, you must also list any attributes that you wish to allow, separated by spaces. Some examples:

This will allow a tags with the href attribute and b tags:

a href,b

This will allow p tags and br tags:

p,br/

Note the / in the br/ tag in this example. That is necessary because of the tag-closing feature mentioned above: if the parser sees only an opening <br> tag, it will think that it needs to close this tag at the end of the sanitized text. Adding the / after the tag name tells the parser that this tag does not need a closing tag.

Note that you must specify any allowed attributes for the tag, unless you want all of the attributes to be stripped. For example, if you allow the a tag, you would also want to allow the href attribute for that tag, or the following HTML:

<a href="http://www.example.com/">

would be turned into this:

<a>

which probably isn't what you want.

If you wish to allow a certain attribute for any HTML tag in which it might appear, use a * as the tag name, followed by the list of attributes. For example:

br/,p,blockquote,* style

This will allow any of the following:

<br style="..." />
<p style="..." />
<blockquote style="...">

Note that you must still explicitly list any tags that you want included; * just allows the attribute listed in any of those tags.

By default, for each TrackBack item in your Movable Type system--either entry or category TrackBack items--an individual RSS feed will be automatically created and managed, listing the TrackBack pings for that item. These pings are stored in your Local Archive Path. If you want to turn off this feature, you can set GenerateTrackBackRSS to 0. The default setting is 1, to generate RSS files for each TrackBack item.

Default value: 1

Example:

    GenerateTrackBackRSS 0

Movable Type uses IP-based comment throttling to provide some protection against comment flooding. ThrottleSeconds sets the number of seconds after which a visitor has posted a comment that he/she will not be allowed to post another comment. For example, if Alice posts a comment at 30 seconds after the minute, she will not be allowed to post another comment from the same IP address for the number of seconds set in this setting. You can increase this setting if you don't get too many people commenting often on your weblog.

This setting will also affect the rate at which TrackBack pings are accepted; see OneDayMaxPings.

Default value: 20

Example:

    ThrottleSeconds 60

The filesystem path to the search_templates directory, which is where your search templates should be located. This setting defaults to ./search_templates, which means that the search_templates directory is in the same directory as the mt.cgi file; you probably don't need to change this setting, unless you have moved your search_templates directory.

Default value: ./search_templates/

Example:

    SearchTemplatePath /home/foo/my/search_templates/

The filename of the default search template, located inside of your search_templates directory (see the SearchTemplatePath directive). If you define and use alternate templates (see below), you don't need to use the default template.

Default value: default.tmpl.

Example:

    DefaultTemplate my-template.tmpl

If you have multiple weblogs, or if you provide several different versions of your site, you may wish to use alternate templates to provide different versions of your search results, as well. See Alternate Templates in the manual for more details. You can define as many alternate templates as you want.

By default, the following alternate template is set up:

    AltTemplate comments comments.tmpl

This sets up the alternate template for the "new comment search."

Example:

    AltTemplate work work.tmpl

To restrict the weblogs included in a search on your site, you can use the IncludeBlogs and ExcludeBlogs settings. IncludeBlogs lists the weblogs that will be included in the search, and ExcludeBlogs lists weblogs that will be excluded from the search. Do not try to use both--IncludeBlogs will override ExcludeBlogs. The default is to search all weblogs. Separate weblog IDs with commas.

Default value: none

Examples:

    ExcludeBlogs 1,3,4
    IncludeBlogs 2

To restrict the weblogs included in a search on your site, you can use the IncludeBlogs and ExcludeBlogs settings. IncludeBlogs lists the weblogs that will be included in the search, and ExcludeBlogs lists weblogs that will be excluded from the search. Do not try to use both--IncludeBlogs will override ExcludeBlogs. The default is to search all weblogs. Separate weblog IDs with commas.

Default value: none

Examples:

    ExcludeBlogs 1,3,4
    IncludeBlogs 2

The following settings specify the defaults for searches on your site; they can be overridden either through hidden form inputs, or in form inputs set by your users. You should probably leave these settings at the defaults and allow your users to override them. RegexSearch is a regular-expression search, and CaseSearch is a case-sensitive search.

Default value: 0 for each setting

Examples:

    RegexSearch 1
    CaseSearch 1

The following settings specify the defaults for searches on your site; they can be overridden either through hidden form inputs, or in form inputs set by your users. You should probably leave these settings at the defaults and allow your users to override them. RegexSearch is a regular-expression search, and CaseSearch is a case-sensitive search.

Default value: 0 for each setting

Examples:

    RegexSearch 1
    CaseSearch 1

The default number of days to search on a regular search (SearchCutoff) or on a new comment search (CommentSearchCutoff).

The default for SearchCutoff is to search from the beginning of your weblog (all of your entries), and the default for CommentSearchCutoff is the last month of comments.

Examples:

    SearchCutoff 7
    CommentSearchCutoff 7

The default number of days to search on a regular search (SearchCutoff) or on a new comment search (CommentSearchCutoff).

The default for SearchCutoff is to search from the beginning of your weblog (all of your entries), and the default for CommentSearchCutoff is the last month of comments.

Examples:

    SearchCutoff 7
    CommentSearchCutoff 7

The maximum number of results to return in a search. If this is a straight search, the number of results is per-weblog; if you set MaxResults to 5, for example, that would mean a maximum of 5 results for each weblog in your system. In a new comment search, this is the maximum number of entries with new comments.

Default value: no maximum (that is, return as many results as possible)

Example:

    MaxResults 5

The sort order for the search results. Using ascend will list the entries in chronological order (oldest entry at the top); using descend will list the entries in reverse chronological order (newest entry at the top).

Default value: descend

Example:

    ResultDisplay ascend

The sort column for the search results. Using created_on will sort the entries by the authored on date; using title will sort the entries by title. This can be used with ResultDisplay to sort in either ascending or descending order.

Default value: created_on

Example:

    SearchSortBy title

The number of words in the excerpt displayed when you use the <$MTEntryExcerpt$> tag inside of your search results. This setting is distinct from the "Number of words in excerpt" setting in your weblog configuration, because this setting is just used for excerpts in your search results.

Default value: 40

Example:

    ExcerptWords 100

By default, a search will search only through the entries in your weblog, not through the comments. A comment search is slower than an entry search, because there is more text to search through. You should probably leave this set to entries, and let your visitors override that setting if they wish to. Possible values are entries, comments, or both.

Default value: entries

Example:

    SearchElement both

By default, the search engine allows most of the above configuration directives to be overridden by search templates. This has the side effect that users could also override those settings by changing values in the query string. In particular, this could be dangerous if you have some private weblogs--even if you use IncludeBlogs or ExcludeBlogs to allow/deny certain weblogs to be searched, users could override that setting to search your private weblog. You can use NoOverride to provide a comma-separated list of configuration directives that cannot be overriden by either search templates or users. This means that only the settings made in mt-config.cgi will be used.

Default value: none

Example:

    NoOverride IncludeBlogs,ExcludeBlogs

The email address of an administrator of the Movable Type installation. This is used as the "From" address on some outgoing emails, when no other email address is at hand.

This directive must be set in order to use the the subscription form for readers who wish to be notified of new entries to your weblog. Failure to set the EmailAddressMain directive will cause an error when a subscriber tries to use the form to be added to your notification list.

Certain tasks are by default run in the background. This frees up the user or other software to continue using the application while MT does important tasks, for example rebuilding.