Denali/Mt. McKinley and Brown Bear Software logo
Calcium - Frequently Asked Questions
Horizontal Line

Installation

  1. Where can I find some installation tips?
  2. Why does my browser display the script text, instead of running the program?
  3. What does "Internal Server Error" mean?
  4. What about this "Permission Denied" error message?
  5. What is this "CGI version 2.42 required" error message?
  6. And how about "Can't locate CGI/Carp.pm in @INC"? (common in recent versions of Red Hat Linux)
  7. We're using a Netscape web server (e.g. FastTrack, Enterprise); why do we get these "Page Not Found" errors?
  8. Why does Microsoft IIS 6.0 always show only a 404 "Page Not Found" Error?

Error Messages

  1. Software error: Can't locate Calendar/CalciumStart.pm in @INC ...
  2. ...CGI application misbehaved by not returning a complete set of HTTP headers.
  3. Software error: Day '34' out of range 1..31 at ... Calendar/Date/Calc.pm line 27
  4. Can't create data file...Permission Denied
  5. Couldn't open Session ID file...
  6. On Windows w/recent Active State Perl:
    Use of uninitialized value in substitution (s///) at (eval 54) line 44
    or invalid method (HTTP verb), HTTP Error 405 - The HTTP verb used to access this page is not allowed.
  7. Can't locate object method "startform" via package "CGI"...

Login/Permission Problems

  1. Why doesn't my Calcium login work?
  2. How do I recover a lost password?
  3. Why can't I reduce anyone's permissions?

General Questions

  1. What URL can I use to go directly to a calendar?
  2. How do I put an image in event text?
  3. Can I display different date ranges?
  4. Why aren't the columns in Block View all the same width?
  5. How do I print the calendar on one page?
  6. Why doesn't my calendar print in color?
  7. Can I change the background color for particular days of the week?
  8. How do I get a left side-bar to display?
  9. How do I include a calendar into another HTML page?
  10. Which files should I backup?
  11. Calcium is overloading the server! What can be done?
  12. Does Calcium work in Perl's "taint" mode?
  13. Do you have a list of live client sites?

Hosting Service

  1. Can I use Calcium's Dynamic Include features with hosted calendars?
  2. If I sign up for the Hosting Service, can I keep my calendar data and settings if I later decide to install my own version?
  3. What would the URL for our hosted installation be?
  4. Can we use a custom domain for our hosted installation, like http://calendar.mycompany.com?

Installation

  1. Where can I find some installation tips?
    In our on-line documentation: Installation Tips

  2. Why does my browser display the script text, instead of running the program?
    This happens when your web server doesn't recognize that it needs to run the script as a CGI program. Try adding a ".pl" or ".cgi" extension to the script name. If that doesn't help, make sure the script is in the "cgi-bin" directory or folder. If you're still seeing the program text when you browse to it, you'll need to find out how to configure your web server to run CGI scripts.

  3. What does "Internal Server Error" mean?
    This usually means the server couldn't run the script at all; not even enough to generate a useful error message describing what the problem is. The best way to find out what's wrong is to look in the web server's error log. (Unfortunately, most people using hosting services can't do this.)

    If you don't have access to the server's error log, you can try getting the messages displayed in the browser instead. To do this, you need to uncomment one line in the main Calcium script file Calcium40.pl.   Edit that file (it's ASCII, so use a plain text editor, not e.g. MS Word), and remove the leading '#' from the fifth line. I.e. change this:

        #use CGI::Carp qw/fatalsToBrowser/;
    to this:
        use CGI::Carp qw/fatalsToBrowser/;
    Then reload the URL; hopefully a more informative message will appear.

    For unix users, two common problems are:

    • the main script file (e.g. "Calcium.pl") does not have execute permission set
    • the path to the perl executable is incorrect. The very first line of the main script file looks like this:
          #!/usr/bin/perl
      If your server has perl located somewhere else, you'll need to change that; e.g. it might be something like
          #!/usr/local/bin/perl
    You should also make sure the main script isn't corrupted; this can happen if it was transferred between machines with different operating systems (e.g Windows --> unix) using FTP in binary mode.

    Finally, if you have shell access to the server (or "command line" access on a Windows machine), you can use Perl to check the script and report any errors. Just go to the directory where Calcium is installed, and run "perl -c Calcium40.pl", e.g.:

      $ cd /home/httpd/cgi-bin
      $ perl -c Calcium40.pl
    That will either display some error messages, or "syntax OK". If you do get errors and don't know what they mean, let us know - we'll be happy to help.


  4. What about this "Permission Denied" error message?
    This is a file permissions problem. Calcium needs to be able to write to the "CalciumDir40/data" directory (and sub-directories in there) to store the data. Since Calcium runs as a CGI script, the user that the web server runs CGI scripts as must have the appropriate permissions.

    On Unix and Mac OS X systems, make sure that user has write permission to that directory. You can do this via FTP if you're using a remote web server. On remotely hosted systems, the user is typically the name associated with your account. If you have your own Apache server, the user is typically something like "nobody", "www", "www-data", "http-user", etc.

    Remember that on Unix systems, the main Calcium script file must be executable by the web server. Also, your web server may be configured to prevent running a script if it is writable by anyone other than the owner. So first, ensure the user the web server runs your script as has execute permission. Then, if you're still having trouble, make sure that only the owner of the file has write permission.

    Note: see below for SELinux systems (like Fedora, from Red Hat.)

    On Microsoft Windows systems running IIS, the user in question is usually called "IUSR_[machine-name]", where [machine-name] is the name of the server. You need to make sure that user has rights to read, write, create, and delete files in the Calcium 'data' folder. With Windows, you typically need to be at the machine to change access rights, so if your site is remotely hosted and you're having file permission problems, it's likely you'll need to get the admin staff to change it for you.

    If you're having trouble setting file permissions on Windows NTFS, you may need to use the cacls command. This is a Windows utility you run from a Command Prompt; change to the Calcium installation directory (i.e. the directory that the Calcium 'data' dir is in), and run this:

        cacls data /g IUSR_[machinename]:C /e /t
    The "/g IUSR_[machinename]:C" part says to Grant that user Change permission; the /e means to add the permission instead of completely replacing the existing set; and the /t makes the command work recursively, i.e. applies the change to all sub-directories as well.


    Finally, if your server is using SELinux, there are further settings you'll likely need to make. (The "SE" in "SELinux" stands for "Security Enhanced".) It's likely that the problem is that system security settings don't allow CGI scripts to write to files unless those files have an appropriate security context. To fix this, you can change the security context of the Calcium data directories and files.

    To do that from the command line, use the chcon command; for example, something like the following:

        chcon -R -t httpd_sys_content_t CalciumDir40/data

    You can use the -Z flag to ls to see the extended seucirty information for files and directories.


  5. What is this "CGI version 2.42 required" error message?
    This means a library file that comes with Perl is too old. The module is called "CGI.pm" - version 2.42 was released back in 1998, so most reasonable sites have a recent enough version. However, if your hosting company (or your system admin!) won't update that module, you can do it yourself.

    It's not difficult; you can install a new version of CGI.pm that's used only by Calcium. Here's a page of instructions.


  6. And how about "Can't locate CGI/Carp.pm in @INC"? (common in recent versions of Red Hat Linux)
    This error indicates that part of the Perl installation on the server is missing. The Perl library "CGI" is not installed - although it is a standard part of Perl, it is sometimes packaged separately. Some recent versions of Red Hat Linux have this problem. To fix it, you need to install the Perl "CGI" module. For Red Hat, you can use the RPM file "perl-CGI", which is on your installation media. Or, you can download the installation package for CGI.pm from the CPAN, from the author's site, or from us. (That last link also has instructions for installing the module just for Calcium - useful if you don't have permission to write to the system directories on the server.)

  7. We're using a Netscape web server (e.g. FastTrack, Enterprise); why do we get these "Page Not Found" errors?
    This problem is easy to fix - please see the solution in the on-line documentation. The same problem (and solution) occur with a few other web servers, such as Xitami.

  8. Why does Microsoft IIS 6.0 always show only a 404 "Page Not Found" Error?
    By default, new installations of IIS 6.0 have most access to the web server restricted. You need to use the "Web Service Extensions" section of the IIS Manager to enable CGI scripts. Please see Microsoft's TechCenter for more information.

Error Messages

  1. A message like:

    Software error: Can't locate Calendar/CalciumStart.pm in @INC (@INC contains: CalciumDir40/upgrades CalciumDir40/redist ...

    A message like this means that Calcium can't find its installation directory. The location of the Calcium source code files and data directory are specified in the main Calcium script; some installations will require the full path to the Calcium installation directory here, instead of a relative path. To fix this, edit the main script (Calcium40.pl), and change the line near the top that looks like this:
     BEGIN {$Defines::calendar_root = 'CalciumDir40'}
    Replace CalciumDir40 with the full filesystem path to that directory. For example, something like:
     BEGIN {$Defines::calendar_root = 'C:\public\html\cgi-bin\CalciumDir40'}
    or maybe
     BEGIN {$Defines::calendar_root = '/usr/local/apache/cgi-bin/CalciumDir40'}
    should help.

  2. ...CGI application misbehaved by not returning a complete set of HTTP headers.
    This is likely a different symptom of the same "Can't locate" problem above; see answer for the previous question.

  3. Software error: Day '34' out of range 1..31 at ... Calendar/Date/Calc.pm line 27
    This problem can occur if Calcium 3.7 or older is running under Perl 5.8 or newer. To fix the problem, download this modified version of the Calcium file "Calc.pm", and copy it into the upgrades/Calendar/Date directory of your Calcium installation. The directory upgrades/Calendar should already exist; you'll likely need to create the "Date" directory in there. (To download the file, right-click the link, and pick "Save Link As..." or "Save Target As...")

  4. Couldn't open Session ID file...
    This is a file permissions problem on the server. When you login, Calcium needs to write some information to a particular file; if the operating system doesn't let it, you'll see an error like this.

    In this case, the file in question is named "sessionIDs", and is in the "data/Master" directory of your Calcium installation. Try changing permissions on that file, so the user that the web server runs CGI scripts as has permission to write to it. Then, go back and try logging in again.

    Please see the Permissions answer for more information on file permissions.

    Or, you can simply delete that "sessionIDs" file from the server. Typically the permissions will be correct when it gets recreated. (That would happen the next time somebody logs in to Calcium.) That file is used only to keep track of who is currently logged in, so you won't lose any information by deleting it.


  5. On Windows w/recent Active State Perl:
    Use of uninitialized value in substitution (s///) at (eval 54) line 44
    or invalid method (HTTP verb), HTTP Error 405 - The HTTP verb used to access this page is not allowed.

    This is due to a bug in the version of the Perl CGI library modules that come with ActiveState Perl version 5.8.8.817. It affects IIS and possibly other Windows web servers. (If you like, see this Perl bug report)

    To fix the problem, you can install a different version of the CGI modules. Simple steps for doing that can be found on our site: CGI Version Fix (Note: that page describes the problem of having a version of CGI that's too old, but you should do what's described there - it also will fix the problems with this new version.)

    This bug may also produce problems with form submission not working, resulting in blank pages, error messages, or returning to the web site's home page.


  6. Can't locate object method "startform" via package "CGI"...

    Calcium uses a few parts of a standard Perl library module that are not included in newer releases (late 2015). You can fix this by installing a patch file; download this newer version of the Calcium file Operation.pm, and copy it into the upgrades/Operation directory in your Calcium installation on the web server. (Right-click the link, and pick "Save Link As..." or "Save Target As...")


Login/Permission Problems

  1. Why doesn't my Calcium login work?
    • Usernames and passwords are case sensitive; for example, "Bob" and "bob" are different.
    • Calcium uses cookies to maintain login information. If cookies are disabled in your browser, you won't be able to login to Calcium. Note: If you're using the Microsoft IE browser and do have it set to allow cookies, it could be a problem on your PC. There might be a corrupt cookie file, a registry problem, or the clock on your computer may be wrong. Please see this page from Microsoft for more information on these IE cookie problems: http://support.microsoft.com/kb/175662

  2. How do I recover a lost password?
    A user with Calcium System Administration rights can reset passwords for users, and assign new ones; lost passwords cannot be recovered, since they're stored only in an encrypted format.

    For security reasons, there's no special `superuser' password or `back doors'; if you lose the passwords for all users with System Administration rights, you'll need to run a special script to reset security - please let us know if you find yourself in this situation, and we'll send instructions.


  3. Why can't I reduce anyone's permissions?
    What's likely happening is that Anonymous Users still have System Administration permission. If that's the case, it basically means no security is in force; anybody will be able to do anything anywhere, and you won't be able to set any user to a lower permission level. (Since all users always have at least the permissions of "anonymous" users.)

    Fix this by removing System Administration rights for anonymous users. Go to the System Administration page and follow the System Security link. From there, make sure the Only the users selected below option is checked, along with whichever users should have System Administration permission.

    There's more information on this at the System Security documentation page.


General Questions

  1. What URL can I use to go directly to a calendar?
    In Calcium v3.6 and later, a URL like this will go directly to the current month in the "Conferences" calendar:
    http://www.mydomain.com/cgi-bin/Calcium.pl/Conferences
    Of course, you will have to substitute your domain name, and the correct path to your Calcium script.

    Some web servers don't handle that extra information in the URL correctly. (Most notably, IIS 4 servers without a special patch.) For these (or any) web servers, you can still get directly to a calendar with a URL like this:

    http://www.mydomain.com/cgi-bin/Calcium.pl?CalendarName=Conferences


  2. How do I put an image in event text?
    Just use the standard HTML <IMG> tag in the event text. You can put a picture of, say, a Big Black Dog in an event using text something like:
     Look at my dog: <img src="/images/BigBlackDog.jpg">
    And if you want that image to be a clickable link, try
     Click on my dog: <a href="http://www.mydog.com">
           <img src="/images/BigBlackDog.jpg"></a>

  3. Can I display different date ranges?

    Yes; you can display any range of dates in the Block or List views; either with specific dates, or using dates relative to today. There aren't links you can click to do this though, you'd need to specify the dates in the URL yourself.

    You need to use the parameters "StartDate" and "EndDate" in the URL. For example, this would show two weeks in September, 2006:

      http://www.mydomain.com/cgi-bin/Calcium.pl?
                   CalendarName=MyCal&StartDate=2006/09/03&EndDate=2006/09/16

    If the calendar defaults to "Block" view, that's the format it would use. You can specify the List view instead:

      http://www.mydomain.com/cgi-bin/Calcium.pl?
                   CalendarName=MyCal&StartDate=2006/09/03&EndDate=2006/09/16&Type=List

    You can also use dates relative to the current date, by specifying small integers for the StartDate/EndDate parameters. Those will be used as the number of days from today. -0 means today, -1 yesterday, 1 tomorrow, 7 means 7 days from today, etc. (Note: you do need "-0" for today; just "0" won't work.)

    This example would display a List View, showing yesterday, today, and tomorrow - no matter what day it is when you click it:

      http://www.mydomain.com/cgi-bin/Calcium.pl?
                   CalendarName=MyCal&StartDate=-1&EndDate=1&Type=List

    The Block View always displays a full week, even if the start/end dates are in the middle of a week, e.g. a Wednesday.


  4. Why aren't the columns in Block View all the same width?
    In Block view, the width of each column is - at a minimum - as wide as it needs to be for the widest entry.

    The problem is that calendar entries will wrap only on whitespace, so if you have an event with a long string in it, the column it's in will be wider. E.g. an event with the text "This is an event with spaces" will wrap nicely, but one with "ThisEventDoesNotHaveAnySpacesInIt" will be rather wide, since it doesn't split the text.

    You can fix this by adding a space where you want the string to wrap; you might enter the long word above as "ThisEventDoesNot HaveAnySpacesInIt".


  5. How do I print the calendar on one page?

    The actual printing is controlled by your web browser; it will try to print whatever is displayed. If the calendar display is too wide to fit on a page, you can try having your browser or print software scale the page down to fit. For example, to do this in IE 7, bring up the "Print Preview" option. (Either via the menu bar's "File...Print Preview", or the drop-down menu next to the printer icon on the tool bar.) On the Print Preview screen, you'll find options to reduce the size of the page. Similar options are available in other browsers, like Firefox.

    Another option would be to create a smaller view of the calendar in Calcium.

    To do that, the easiest way is to create a new calendar and set it to Dynamically Include events from the calendar you actually want to print. Then, set the display options on that new calendar so it displays smaller - e.g. reduce font sizes, change header/footer, etc.

    That way, you can change the settings for the "printable" calendar so it prints better, while not affecting the browser display of the "real" calendar.


  6. Why doesn't my calendar print in color?

    This is likely due to print settings in your web browser. One important thing to note is that most of the colors you see in Calcium are actually *background* colors; in most browsers, there's a separate print setting for that. For instance, in Internet Explorer on Windows:

    • From the IE browser menu select "Tools/Internet Options..."
    • Click the "Advanced" Tab
    • Check the box labeled "Print background colors and images"

    For IE8, there's another place w/this setting

    • From the IE browser menu select "File/Page Setup..."
    • Check the box labeled "Print Background Colors and Images"

    If you're using a different browser, there's likely a similar setting.


  7. Can I change the background color for particular days of the week?

    Yes - while there's no calendar Setting for this, you can do it using CSS directives. Go to the "Settings" page for the calendar, and click the "CSS" link.

    In the "Inline CSS" section on that form, add something like this:

       .Tuesday, .Wednesday, .Thursday {background-color: lightblue;}
    That will make the background for Tuesdays, Wednesdays, and Thursdays be light blue.

    Be careful with the syntax; note you do need the leading periods. You can of course use whatever color you like instead of "lightblue". (Another named color, or a numeric one, like #890a0b.)


  8. How do I get a left side-bar to display?
    You can do this with a little trick in the Calendar Header. You need to specify the Header as something like:
     </table>
     <table width="100%" background="/images/background.jpg">
       <tr><td>Side Bar Content goes here...</td>
           <td><table>
    and set the Footer to:
     </table>

    Yes, the table tags don't match up; the calendar generates some that fit together with these. You may need to experiment a bit to get it looking right :-)

    (Warning - this is not a supported feature, and behavior may change in future releases.)

    Of course, you can also get a left-side menu using HTML frames.


  9. How do I include a calendar into another HTML page?
    There are a few ways to do this:
    • Using HTML Frames or an IFrame
    • Using SSI (Server-Side Include)
    • Using the side-bar method, above.

    Note that using a Printer-Friendly View may be useful; this way, you can choose to not display the calendar navigation controls, or the calendar header, footer, etc.

    For examples, please see our Calcium Demos page.


  10. Which files should I backup?
    All Calcium data and settings are stored in the 'data' directory of your Calcium installation; that's all you need to backup. Make sure you get the sub-directories too. (And if you've made any custom changes to the source code, you'll want to save those.)

  11. Calcium is overloading the server! What can be done?

    The most common reason for this is that a web robot, spider, or other program is accessing the calendars and following all links, resulting in a large number of requests to the calendar in a short time.

    You can check the access logs for your site to see what sort of requests are coming in; if it is a robot/spider problem, there are two solutions. First, you can set security on your calendars to require logging in to see them. Or, you can try blocking robots using the standard "robots.txt" file, or by configuring your web server. (E.g. using "Deny" in apache.)

    Another reason Calcium can be CPU-intensive is if a calendar has a very large number of events. If that's the case, you might want to consider deleting old data that you don't need; that would help reduce the load. An easy way to do that would be to go to the "Settings" page for a calendar, and click the "Delete Events" link. That will show a form you can use to delete all events in a date range, e.g. from Jan 2001 through Dec. 2005.


  12. Does Calcium work in Perl's "taint" mode?
    Yes. You can turn taint mode on easily; just add the "-T" option to the end of the very first line of the main Calcium script.

    This won't work if you're using Microsoft's IIS however; you'll need to edit the script mapping (for ".pl" or ".cgi" extensions, whatever is mapped to Perl); note that this will cause the server to run all Perl scripts in taint mode.


  13. Do you have a list of live client sites?
    No, but Google does; try this search:
       http://www.google.com/search?q="calcium+4.0.4+professional"

Hosting Service

  1. Can I use Calcium's Dynamic Include features with hosted calendars?
    Yes! Your installation is a complete, private version of Calcium Professional. All features are available, including dynamically including one or more calendars into another.

  2. If I sign up for the Hosting Service, can I keep my calendar data and settings if I later decide to install Calcium on my own server?
    Yes!

  3. What would the URL for our hosted installation be?
    something like http://hosting.brownbearsw.com/YourNameHere

  4. Can we use a custom domain for our hosted installation, like http://calendar.mycompany.com?
    Yes; you'd need to set up the DNS to point your domain to our server (we'll supply the appropriate IP address.) There is also a $150 setup charge for configuration on our end.