Chapter 10 - Webtix - Center Stage Software
Transcription
Chapter 10 - Webtix - Center Stage Software
Chapter 10: Webtix Definition: Webtix is a collection of php functions to connect the internet to your sales files. The usual way is to think of Webtix as another clerk on your network – with severely limited privileges. However, Webtix is a ‘clerk’ that works 24 hours a day for less than the minimum wage. Webtix is supplied as a set of PHP scripts. The scripts are actually small programs that are interpreted by PHP. The scripts can be modified by an HTML editor or text editor. Seat selection is by a Best available, or user-selectable listing. If you are using “Best available.” The seats get selected in whatever order you choose. Because of the wide variety of opinions as to what is the best available, there are 3 separate orders for ‘Best available.’ For example: With user-selectable seats, the chart is displayed and your customers select by clicking. Note: their seats will be moved if they try to leave empty seats on both sides of them. 10 :1 Chapter 10 - Webtix System requirements: You need a standard LAMP stack and a static IP. You need Apache 2, PHP 5 and MySQL5. You must be able to bring up the default web page from a browser. Your internet connection is important. A connection of 1mb/s is the minimum people are happy with. A residential DSL connection will work – slowly. Go to http://www.broadbandreports.com/speedtest to find what your speed really is. A 2 GHz computer with 2G ram is the minimum. You can have your web site at one ISP and Webtix on a local machine. This makes a lot of sense for the organizations that use a lot of graphics. They keep their site at a local ISP on top of a large pipeline with lots of bandwidth. The Webtix computer usually has a lower bandwidth requirement and can be kept locally. All the customer sees is a button that says, “Click here to purchase tickets.” Webtix can be put on the same server as your database however: 1. Serving web pages consumes a lot of processing power - especially with a site certificate. You may notice your network slowing down. 2. If your web site is hacked, all your data will be compromised. Having your data on a separate server, with a non-mapped drive, is safer. 3. If you are keeping credit cards, you are at risk. This will not be approved under PCI regulations. A computer with card information must be separate from the rest of the network and the internet. And, you must have a firewall with stateful packet inspection separating that computer from the rest of the network. Other things that are handy to know: You will want a firewall with ports 3306, 80 and 443 open. Navicat is a simple MySQL program. Cost is about $125. They have a trial version. It is handy for getting into the database (if you like that sort of thing). If you install phpMyAdmin, you need to be aware of the lack of security. Do not run it as root in the default directory. Rename the phpMyAdmin subdirectory to something else. Best of all, move the directory to another part of your disk until you need it. You will want a site certificate. You don’t need it for Webtix to function but lots of people will want you to have it (including your bank). This certificate is what gives you the little lock on the bottom of your screen. These things are $125 to $250 and are available from companies like Comodo.com, Thawte.com, RSA, Verisign, Geotrust etc. Handling credit cards puts you at risk. You must follow the guidelines of the PCI standard. If you don’t, you can be put out of business in a matter of minutes. The specifications are at http://usa.visa.com/merchants/risk_management/cisp_overview.html Among other things, you need a firewall with “stateful packet inspection,” anti virus software, security procedures, and a policy manual. Because complying with the regulations is so difficult and important, a service like Authorize.net or MerchantPlus.com makes a lot of sense. You avoid the regulations by not keeping the card numbers on your computer or in your office. 10:2 2002-10 Center Stage Software Chapter 10- Webtix First, you need to do a few things: Talk to your bank. Bankers are the ones who set the rules here. Tell them that you are planning to do sales over the internet. They will tell you what you need to do e-commerce and get e-commerce certification. They may insist that you have a site-certificate (to give you the little lock at the bottom of your browser window). Do things the banker’s way. If you don’t, fines start at $10,000 and they will revoke your merchant account. How are you processing credit cards now? Wintix5 and Webtix5 still support PC Charge. We also recommend taking a look at Authorize.net or Merchantplus.com. Both of them store the credit card numbers on high security sites. You avoid the CISP regulations by not keeping the card numbers in your office. Any maintenance (refunds, cancellations, extra charges) are done through a web interface. Get an email response form setup. It takes about five minutes to enter a “mailto” command in your home page. This starts getting your customers trained to order over the web. Get a simple html form to post the data with a submit button. This will take a bit longer since it is an actual web page that uses cgi scripting. You will need to enter your list of shows, performances, and prices. Let your customers know that if they submit an order on the internet, they will get first priority. This form is the one you will expand on when you finally jump into Webtix. The whole process can take a couple weeks. Note: if you have a service that emulates a static IP (domain forwarding service) this will probably not work with an SSL certificate. You will need to use Webtix with the NoSSL option turned on and processing directed to the Simple Integration Method (SIM) from Authorize.net. Installation is copying the PHP scripts into the proper folders. Then, you need to set up the /ticketing/_custom/_includes/config.php with the information to connect. 2002-10 Center Stage Software 10: 3 Chapter 10 - Webtix Where do you put the server? You need both database and web services. And, the users in the office and customers on the internet need to use the same data. No matter what you do, it will be a tradeoff. It's made more complicated by the fact that you have many options. In our opinion, the best solution is to have 2 computers. One computer supplies the web services and is at the ISP. The second computer supplies the database services and is located at the box office, behind a firewall. That gives the best responsiveness to the box office bunch. Because ISP's sit on a very large data connection, response is great. A second solution is to have everything on 1 computer in the box office, behind a firewall. The advantage here is that the box office has control of everything. This is also the least expensive. Another third solution is to have everything at the ISP. The advantage here is that the ISP takes care of everything. The disadvantage is that the computers in the box office are dependent on the data links. If the box office has good connection (at least 500 kb up and down), performance will be acceptable. 10:4 2002-10 Center Stage Software Chapter 10- Webtix ODBC Setup Explanation: The standard way for Windows programs to communicate with a database server is through ODBC. This is another sacred acronym that means, “Open Data Base Connectivity.” It is part of every Windows computer. But, it needs to be set up. You will need the MySQL ODBC connector. You can get it from the Wintix installation disk or download it from MySQL.com 1. Run the ODBC connector to set up the connections. The name is C:\Tix7\mysql-connector-odbc-5.1.6-win32.msi The process will go through a couple steps and then vanish. If you are curious and want to see what happened, go to the Control panel | Administrative tools | Data sources (ODBC). It will look something like this: Most of you have installed programs before. This should not be a mystery. The ODBC connection might be new. Just let it do its thing. It’s painless. You only need to do it once. Now is a good time to double click on the MySQL driver and turn off the connection pooling. 2002-10 Center Stage Software 10: 5 Chapter 10 - Webtix Logging into your MySQL database with Wintix You will need 2 MySQL logins. You have 2 now. the first is from Localhost. The second is from anyplace outside of localhost (anywhere). You should also have good passwords (12+ characters, upper and lower case, with numbers). By nature, your password has to be known to you and only you. In order to use Wintix to login, you will need to modify the Sqlrdd.ini. You can use a text editor (like Notepad). When you look in the Sqlrdd.ini file you will see something like this: connString=MySQL=285.118.239.75;UID=;PWD=;DTB=tix7 This will connect you to 285.118.239.75 and give a login screen like this: Once you get comfortable with logging in, you will probably want to set some defaults. You can change the Sqlrdd.ini file so you just need to enter your password. Or, you can change it to automatically enter both your name and password. If you leave the password blank, you will be prompted for a password. If you leave both the name and password blank, you will be prompted for both. Lets say your login is george and your password is spelvin. You would change the Sqlrdd.ini to contain: connString=MySQL=285.118.239.75;UID=george;PWD=spelvin;DTB=tix7 With that, you will be logged in automatically and never see the login dialog box. Of course, you do need a secure office to do this. And, you must not be keeping credit card numbers (File | Initialization | Credit cards | Save the full card number must be unchecked). 10:6 2002-10 Center Stage Software Chapter 10- Webtix Setting up Webtix to handle requests You need to give Webtix permission to sell shows. This is done through the domains. Each show that you intend to sell needs to have the internet as a one of the domains. Click on the Internet options button for the show that you want to put on sale. You will get the following screen: 2002-10 Center Stage Software 10: 7 Chapter 10 - Webtix Note the Use the ranking Seating preference #1, 2, & 4. This is to give your customers a choice as to their idea of the best seats. Obviously, you need to give them at least 1 choice. These preferences are set up when you set up the seating plan. You need to set it up for every seat. Click on Tools | Seating plans | Modify plan to get to the seating plans. Then, do a a right-click and block select. The price codes are going to be the prices that the Webtix (the Internet domain) will be allowed to sell. Payment types are the types of money that Webtix will be allowed to take. 10:8 2002-10 Center Stage Software Chapter 10- Webtix Each performance must have an on and off sale date and time: The option, “Exclude from Internet sales” will turn off sales to Webtix – and Webtix only. This is a handy way to turn off sales for a performance from home. You can access this section through the Promoter section of Webtix. The fields PerfInfo1 and PerfInfo2 are optional. They are text fields, specific to the performance. Usually, they are used to add extra information to the Webtix scripts. 2002-10 Center Stage Software 10: 9 Chapter 10 - Webtix If you have a large chart and have the Multiple charts turned on: Each section needs to be available to Webtix – if you want to sell that section. Click on Edit the entries and you will get into the good stuff: Most of the fields are not changeable or are not used. For our purposes, there are 2 fields you need to be concerned about: Plan description – this is what shows up on the customer’s screen. It tells them what section they can select Domain list – this lists the domains that can sell a particular section. Obviously, ‘Internet’ must be one of the domains. You do not need to use commas, upper and lower case. However, it makes it easier to read Webtix chart – this will allow customers to select their own seats 10:10 2002-10 Center Stage Software Chapter 10- Webtix Move seats – this will allow Webtix to move the seats the customer selected to stop single seats from appearing. There is a lot of repetitious work here. You can use control-C, control-X, and control-V to automate some of it. 2002-10 Center Stage Software 10: 11 Chapter 10 - Webtix HTTPS – what creates the little lock on your customers screen HTTPS through SSL (or PICS) encrypts traffic that flows over the wire in a Web request. Both the data sent and the data returned over an HTTPS link is secure through encoding that occurs on both the client and server. SSL is implemented at the HTTP level through Web server security by installing a secure certificate on your Web server. Certificates must be purchased from a Certificate Authority such as Thawte (www.thawte.com). In order to install a secure certificate you need to apply for the cert, prove that your business is who you say you are (read: paper work that takes a few days), and a fee ($250 first time $150 renewal). For installation instructions check with the Certificate Authority. They all have very detailed instructions. Once installed, HTTPS usage is very transparent to your application. All you have to do to run securely is change your links to HTTPS:// instead of HTTP://. When the request data is captured everything looks just like a plain HTTP request. 10:12 2002-10 Center Stage Software Chapter 10- Webtix Reporting through Webtix The reporting section was never something we thought would be important. However, our customers tell us otherwise. Webtix reporting relieves the box office manager from incessant phone calls from promoters and managers. In every case, the question always is, “How are sales doing?” Using the Webtix reporting system, they can get reports every minute if they like. One of our customers refers to it as the GYODR system (get your own damn report). All the reports here were built from our customers’ suggestions. To give clients access to their domain through Webtix, make sure of the following: Passwords must be turned on in Wintix initialization Don’t forget: George Spelvin is used as a demonstration password only. You need to remove it on a production site. Otherwise, you will give anyone able to read instructions ability to modify all shows that Webtix has on sale. You don’t want that. 2002-10 Center Stage Software 10: 13 Chapter 10 - Webtix In Wintix Create an account for the client in Wintix and give them their own domain. This domain must be listed in the DOMAIN list for any show you want to give the client access to. To get here in Wintix: Click on Tools/Password/Edit the List of Users Log in as SYSADM (default password is SYSADM unless you change it) 10:14 2002-10 Center Stage Software Chapter 10- Webtix Create an account of the same name and password in your list of Windows users and give them DOMAIN ADMIN privileges. To add DOMAIN to a show in Wintix Click on: Show / Edit a Show / Show Title / Internet Options / Domains Click on ADD A NEW DOMAIN, and replace NEWDOMAIN with Domain Name you’d like. (Any show you want to sell online must also have INTERNET domain) Customize REPORTS.HTM with an html editor to match the feel of your website. Once the client logs in over the web, they will be able to choose which report they would like to run (Run of Show, Single Performance, All Performances, Report for Sales in a Day). 2002-10 Center Stage Software 10: 15 Chapter 10 - Webtix After choosing report type, reports can be customized to include any listed data fields. 10:16 2002-10 Center Stage Software Chapter 10- Webtix Once the report has been run to the screen, it can be copied and pasted into any spreadsheet program. Here is a sample report: The blank sale (#1619) represents a Webtix sale in progress. If it is not completed within a half hour, Seat Release will cancel the sale. 2002-10 Center Stage Software 10: 17 Chapter 10 - Webtix Online Reporting To give clients access to their domain through Webtix, make sure of the following: Passwords must be turned on in Wintix initialization Create an account for the client in Wintix and give them their own domain. This domain must be listed in the DOMAIN list for any show you want to give the client access to. To get here in Wintix: Click on Tools/Password/Edit the List of Users Log in as SYSADM (password is SYSADM unless you change it) 10:18 2002-10 Center Stage Software Chapter 10- Webtix To add DOMAIN to a show in Wintix Click on: Show / Edit a Show / Show Title / Internet Options / Domains Click on ADD A NEW DOMAIN, and replace NEWDOMAIN with Domain Name you’d like. (Any show you want to sell online must also have INTERNET domain) Customize REPORTS.HTM with an html editor to match the feel of your website. Once the client logs in over the web, they will be able to choose which report they would like to run (Run of Show, Single Performance, All Performances, Report for Sales in a Day). 2002-10 Center Stage Software 10: 19 Chapter 10 - Webtix After choosing report type, reports can be customized to include any listed data fields. 10:20 2002-10 Center Stage Software Chapter 10- Webtix 2002-10 Center Stage Software 10: 21 Chapter 10 - Webtix Once the report has been run to the screen, it can be copied and pasted into any spreadsheet program. Here is a sample report: 10:22 2002-10 Center Stage Software Chapter 10- Webtix Domain report This report lists everything sold for your domain. It lists: Each performance Tickets sold Dollar amount of the sales Seats remaining Capacity Percent sold 2002-10 Center Stage Software 10: 23 Chapter 10 - Webtix Reports, by day These reports have similar information to what the Wintix reports have. The Daily Sales report lists each sale: 10:24 2002-10 Center Stage Software Chapter 10- Webtix 2002-10 Center Stage Software 10: 25 Chapter 10 - Webtix The What Shows report lists every performance and what was sold for it. As with the other reports, you can do a control-A, control-C, and copy the data. Then, open your spreadsheet and do a control-V. All the data will be pasted in your spreadsheet. 10:26 2002-10 Center Stage Software Chapter 10- Webtix Excluding specific seats or sell only specific sections If you want to exclude specific seats from the web, the way to do it is through the Webtix domain permissions. First, go to the domain setup for each show and take a look at the categories the domain "INTERNET" is allowed to sell. Then, reduce those categories to just 1 or 2 that you will specify in the plan. Next, go into the seating plan and put in the same internet categories in the valid price codes *only those seats for sale on the Internet.* If you are using best available selection, seats are selected until there is a break in the seats or the seating preference changes. You can use this behavior 2 ways: 1. If you want people to be grouped in a center section, put breaks between the seats. Then, when the center section of 1 row becomes filled, the next seats selected will be in the next row. 2. If you have cabaret seating with tables and you want the people to be grouped into tables, make sure that all the seats for a table have the same preference ranking. And, make sure that all the other spaces have a preference ranking of zero. You can turn the automatic seat selection on when you edit a performance and press shift-F7 (in standard Wintix). Or, in the Wintixpro version, click on edit a chart and then click on ‘Edit the entries. Sort orders are also what customers using Webtix see when they select what seats they want. Look in Chapter 5 in the section, “Working with Seating Plans” for more information. Definition: a “break” between the seats is a space, on the plan, that has a preference ranking, but is not for sale. Either the status is blank or the seat has no valid price codes. One example of a break is the space that is put in for an aisle. Use the right click and block select to save time here. 2002-10 Center Stage Software 10: 27 Chapter 10 - Webtix Allowing customers to select their own seats on a seating chart There are 2 philosophies here. One philosophy is that the box office manager decides what seats the customers will get. This has been put forth by one of our customers: "If I enjoyed a fiery Hell, then I'd let them select their own seats. But right now, there is now way on God's Green Earth I would allow them to do that. They would leave an empty seat between them and the next couple just to hang their coat. Then, they would get angry at me for selling that seat." – Carla Ramlal, box office manager of Handel and Hayden Society The other philosophy is that people should select their own seats. It makes them feel better to have a choice. However, if you give them a chance, there will be single, empty seats all over the chart. The solution is to move their seats after they have selected them. Webtix will do it automatically. It works like this: Webtix looks at the seats that have been selected. Then, it checks the seats on either side. If there is a single seat on the left or right side, Webtix will move the seats to the right or left and fill in the hole. Obviously, there will be some seating arrangements where you will not want the seats moved (theatre-in-the-round or cabarets). You can turn the feature off for those charts. To use this feature with Webtix, edit the show in Wintix and edit the performance. Then, press shift-F7. You will have a window like this: 10:28 2002-10 Center Stage Software Chapter 10- Webtix At the bottom are 3 options: Use best available seat selection in Wintix Use the interactive chart (Webtix only) Allow Webtix to move the seat choices You probably want the bottom 2 options checked. This will allow your customer to select their own seats. And, will move them. Allowing customers to select their own seats will give them the interactive seating chart in Webtix. However, if you let them sit exactly where they want, you will end up with a lot of single seats that will be difficult to sell. The solution is to allow Webtix to automatically move the seats. Webtix will move the seats 1 seat to either the right or left, as needed. You would not want to turn on this option where the seats are not in a proscenium layout. This can include cabarets, arenas, theatre-in-the-round, and vertically numbered seats. If you have a larger space, you will have broken the chart up into several pieces by turning on the multiple chart option. To turn on this option in that case, you need to edit the seating chart and click on the Edit the entries button. Move to the right side. Here’s what you will get: 2002-10 Center Stage Software 10: 29 Chapter 10 - Webtix Domains and Webtix In Webtix, the domain allows Webtix to sell specific shows and specific prices. It also tells Webtix to take particular performances off sale before or after the off sale date and time. Every show has a list of domains that that can sell tickets for it. “Internet” must be part of the domain list for Webtix to sell the show. At least 1 price code must be checked. 1 payment type must be checked. What price codes the domain can sell for that show. Each show can have as many domains as you want. To get to this section, edit the show. Click on Internet options. Click on domains. 10:30 2002-10 Center Stage Software Chapter 10- Webtix Promotional codes Promotional codes are the internet version of a coupon. What they do is allow your customers to enter a special code that you have given them. Then, they are allowed to purchase a certain number of tickets at a special price. These codes are specific to 1 show. They also have a date and time that they go on and off sale. To get to this section, edit the show. Click on Internet options. Click on promotional codes. 2002-10 Center Stage Software 10: 31 Chapter 10 - Webtix Tickets and ticket delivery methods Tickets are sent as a PDF attached to each sales record. This happens automatically when Webtix is told to render the PDF tickets. This is the variable: $cstage['Render_PDF_Tickets'] It is in /ticketing/_custom/_includes/config.php Ticket delivery methods Let’s say you live in a neighborhood where no one trusts the postman. They would not want anything valuable to be mailed to them. However, they would trust Fed Ex and UPS. They would even be willing to pay extra for the service. But, they could only order tickets up to 2 days before the performance. That’s the purpose in the ticket delivery methods. You can specify a method that the tickets will be sent, the cost, and the cut-off day: To get to this section, edit the show. Click on Internet options. Click Ticket delivery methods. Note: 1. Each delivery option will automatically disappear from your customer’s choices at the number of days before the off sale date and time. 10:32 2002-10 Center Stage Software Chapter 10- Webtix Collecting more information as part of a Webtix sale – Season tickets This section deals with the “FormChoice” variables. Let’s say you need to collect a little more information from your customers. These can be things like menu choices (chicken, steak, or chocolate cake), or performance preferences with a season ticket, or additional registration information with class sessions. Webtix does not have any direct way of asking for this information. The only thing that comes close is the remarks field. The solution is to add some a variable or 2 with the first letters being “FormChoice.” This information is stored as HTML in one of the ShowInfo fields and called when you need it. It can also be used to sell season tickets: For this, the following text was cut and pasted into the ShowInfo1 field: <div class='text'><p>New season tickets will be processed after the renewals have been completed on 3/31/08<br><b>Please choose a day...</b> <select name="formchoiceDay" size="1"> <option value="Friday-8:15pm">Friday-8:15pm</option> <option value="Saturday-8:15pm">Saturday-8:15pm</option> <option value="Sunday Matinee-2:15pm">Sunday Matinee-2:15pm</option> </select></p> <p><b>Now choose a week...</b> <select name="formchoiceWeek" size="1"> <option value="1st week of the run of the show">1st week of the run of the show</option> <option value="2nd week of the run of the show">2nd week of the run of the show</option> 2002-10 Center Stage Software 10: 33 Chapter 10 - Webtix <option value="3rd week of the run of the show">3rd week of the run of the show</option> <option value="4th week of the run of the show">4th week of the run of the show</option> </select> <p><b>Seating preferences</b><br> <select name="formchoiceSeating1" size="1"> <option value="Center Section">Center Section</option> <option value="Audience Left">Audience Left</option> <option value="Audience Right">Audience Right</option> </select> <p><b>Seating preferences</b><br> <select name="formchoiceSeating2" size="1"> <option value="Front Row (Handicapped-Accessible)">Front Row (HandicappedAccessible)</option> <option value="Aisle">Aisle</option> <option value="Back Row">Back Row</option> <option value="Doesn't Matter">Doesn't Matter</option> </select> <p><b>New or Renewal?</b><br> <select name="formchoiceNew" size="1"> <option value="New">New Season Ticket Holder</option> <option value="Renewal">Renewal</option> </select></div> We will assign the seats for you and mail them to you...please ignore the date on the ticket receipt that says "Nov 30, 1999"<br> <b>Shows include:<br>Fiddler on the Roof (9/12/08-10/5/08)<br> Man of La Mancha (11/14/08-12/7/08)<br>Annie (1/2/09-1/25/09)<br>Sound of Music (2/27/09-3/22/09)<br>Jesus Christ Superstar (4/24/09-5/17/09)<br>Music Man (6/19/09-7/12/09)</b><br>after you've made your choices, click the green button below to continue...</p> 10:34 2002-10 Center Stage Software Chapter 10- Webtix Credit card processing For settings and comments that are missing in your "config.php" look in "config_template.php". Following are settings from "config_template.php" that you would modify in setting up creditcard processing in "config.php". ----------To process credit cards: $cstage['processCards'] = true; $cstage['cc_testing'] = false; // test credit card - not live ----------To change credit-card processor to PCCharge: $cstage['cc_module'] = "pccharge"; // (authorize_nossl,authorize,merchantplus,pccharge,wintix) credit card processor module $cstage['pcCharge'] = "filename"; // File Name $cstage['pcCharge_CCSoftware'] = "/media/somewhere"; // Software Directory Location $cstage['pcCharge_TID'] = "your merchant number"; // Merchant Number $cstage['pcCharge_cProcessor'] = "your id"; // Processor ID $cstage['pcCharge_XML_File'] = true; // (true/false) Use XML File Format $cstage['pcCharge_SecondsToWait'] = '10'; // 0 or greater ----------If you cannot get Webtix-PCCharge to work, the "wintix" module saves all cc data to the database for processing later in Wintix. Just make sure you have the settings: $cstage['cc_module'] = "wintix"; // (authorize_nossl,authorize,merchantplus,pccharge,wintix) credit card $cstage['saveCcNumber'] = "full"; // (none, full, partial) - save credit card to database -----------------------------Excerpt from config_template.php: // Credit Card Settings $cstage['saveCcNumber'] = "__SAVE_CC_NUMBER__"; // (none, full, partial)- save credit card? $cstage['processCards'] = __PROCESS_CARDS__; // true / false Will Webtix process credit cards? $cstage['cc_module'] = "__CC_MODULE__"; // (authorize_nossl,authorize,merchantplus,pccharge,wintix) credit card processor module // The "wintix" module does NOT process, collect, or validate anything. ALL orders need to be re-processed in WINTIX to collect funds. $cstage['cc_testing'] = __CC_TESTING__; // test credit card - not live $cstage['cc_error_tolerance'] = __CC_ERROR_TOLERANCE__; // number of tries a customer has to attempt cc processing per session $cstage['cc_login'] = "__CC_LOGIN__"; // login used to access credit card processor $cstage['cc_key'] = "__CC_KEY__"; // key or password for using with login $cstage['cc_hash'] = "__CC_HASH__"; // optional for some credit-card processors // PC Charge Specific Configurations $cstage['pcCharge'] = "filename"; // File Name 2002-10 Center Stage Software 10: 35 Chapter 10 - Webtix $cstage['pcCharge_CCSoftware'] = "/media/somewhere"; // Software Directory Location $cstage['pcCharge_TID'] = "your merchant number"; // Merchant Number $cstage['pcCharge_cProcessor'] = "your id"; // Processor ID $cstage['pcCharge_XML_File'] = true; // (true/false) Use XML File Format $cstage['pcCharge_SecondsToWait'] = '10'; // 0 or greater 10:36 2002-10 Center Stage Software Chapter 10- Webtix Installation of Webtix on a LAMP stack This chapter is based on our experiences and it intended as a guide only. The reason to use Linux is not because it’s less expensive. The reason to use it is because it’s simpler, easier, more secure, more reliable, and the quality of help you can find is better. In our offices, production servers run Open Suse. Don’t let that sway your decision though. There are other Linux distributions you should consider: CentOS, Red Hat, Debian, Mandrake, and Ubuntu to name a few. Each distribution has its own advantages. You should base your decision on what you are familiar with. Install Apache and PHP on a MySQL server. Make sure that Apache is enabled by bring up the index.html. Requirements: PHP 5.3 with apache2-mod_php5, php5-curl, php5-dom, php5-mysql, php5-mysqli, php5dbase, php5-gd, php5-mcrypt, php5-zlib Apache 2 MySQL 5 Lynx - if you are planning to use the scheduled reporting feature Zend Framework (if you are using it) Test MySQL by typing mysql at a command prompt (it may need to be enabled in the inittab). At this time, it is also useful to install Navicat (there is a free version for Windows and Macs). You need to open port 3306 in the firewall. In Navicat, login as root (no password). This can only be done on localhost. Of course, you will want to change this vulnerability. While you are in Navicat, create new users with passwords. The only place they will need access to is the working subdirectory. By default, this is called tix7. You will need to create this database. There are several tools to do this. We have found Navicat to be the easiest. Transfer the tables of the tix7 database on to your server. And, make a backup copy of the database on your server. Installing the PHP scripts: Unzip the contents of the ticketing folder into the working directory. It will default to unzipping into ./ticketing. This will be listed in Apache’s configuration file as the HTDocs variable. CentOS and Red Hat: /var/www/html Ubuntu: /var/www/ Suse: /srv/www/htdocs Launch your browser and go to the document root (where the PHP files were unzipped to). Open events.php. This form will walk you through the configuration settings. 2002-10 Center Stage Software 10: 37 Chapter 10 - Webtix This installer is a one-time installer. It cannot be automatically run again. After this is run, you must make any further changes in the ./ticketing/_custom/_includes/config.php. If you want the same report, run ./ticketing/admin/testinstallation.php. 10:38 2002-10 Center Stage Software Chapter 10- Webtix Installation notes: 1. Have your Authorize.net login and key ready 2. Set /ticketing/_custom/_includes/ to be world writable before running the installation script. Set it to be read-only when you are finished. 3. Set /ticketing/_includes/temp_files and /ticketing/_includes/temp_fonts to be world readable and writable. 4. Remove /ticketing/_includes/module_install/ when finished 5. The Webtix configuration file is /ticketing/_custom/_includes/config.php This message means that PHP cannot connect with the MySQL server. You need to edit your ./_includes/config.php and check the following entries: dbHostName dbUsername dbPassword dbDatabase Make sure all the tables are type InnoDB. If any of the tables are MyISAM, Webtix will not work. Security hole: The default behavior of text editors is to make a backup copy of the file that was edited. For most of the PHP scripts, this does not make any difference. In the case of the config.php, you are exposing a world-readable copy of the file that contains the password to read and write your data. You don’t want this. You will want to change other things ./_css/maincss.php The style sheet ./_includes/page_header.php The header of the pages ./_includes/page_footer.php The footer of the pages ./_includes/ticket template The layout of the ticket ./_includes/email Email templates Run the file, Events.php. Your shows will come up. To test the installation, run the file ./admin/testinstallation.php. This will tell you if you need to make any changes. In particular, the ./includes/temp_barcode, ./includes/temp_fonts, and ./includes/temp_pdf need to be world readable and write able. Once the testinstallation.php does not give any errors, you will be up and running. An occasional problem: The program will stop at process.php. If the email tickets is set to false, Webtix works. This can be caused by 4 things: • Insufficient memory allocated in /etc/php5/apache2/php.ini minimum is 30MB (default is 8MB) • There is word-wrapping in the tickets (php5-dom refuses to handle this) • Proper fonts are not installed (you must have a seraph font and a sans seraph font) • Your mail server may be down (check and see if you can send and receive email) 2002-10 Center Stage Software 10: 39 Chapter 10 - Webtix Accessories: phpMyAdmin is a free tool that is easy to use, flexible, and handy for a wide variety of jobs. It can also be a huge security hole. It’s not that the code is bad, it’s just that you must set it up properly. Some suggestions: Rename the subdirectory phpMyAdmin to something else Move the subdirectory out of the HTML path when you do not need the program Do not make the program capable of logging in without a username and password Use a good password – 12 to 16 characters, upper and lower case with some numbers Everyone on the internet will know you have the program installed. They will be constantly trying to get in. Navicat has an inexpensive GUI tool. This is a little different from phpMyAdmin since it works locally (from your desktop) and accesses the MySQL data directly. Like phpMyAdmin, it is handy for doing a lot of things. It works on Windows, Linux, or Mac. Of note: Free versions and trial versions are available You can connect straight to the database, or use an SSL, SSH, or HTTP tunnel If you have a paid copy ($125), you can do other things like reports and scheduled tasks and data transfer. It has the easiest way to back up a MySQL database we have found (just copy your database to another server) Firewalls: You will need a firewall with deep packet inspection (stateful packet inspection). The built-in firewalls in Red Hat, CentOS and Suse are supposed to do this but we are not sure if they are really stateful packet inspection. Verifiable information on these firewalls is hard to come by. A hardware-type firewall from SonicWall, starts at $400. Other firewalls can go up to about $10,000. 10:40 2002-10 Center Stage Software Chapter 10- Webtix Setup for Wintix for SSH tunneling Explanation: Every time you sent anything over the internet, someone can read it – whether you want them to or not. The people who do it range from criminals (who are looking to harvest credit card numbers) to the government (their carnivore project). If you are sending sensitive data (especially credit card numbers), you need to protect it. This includes the passwords that you log in with. Solution: Use Putty for remotely accessing your MySQL database. Putty is an open source program that runs on a Windows machine. It sets up a connection with a SSH machine and encrypts everything in between. The encryption is 128 bit encryption. Warning: use of Putty is illegal in countries where encryption is outlawed. An additional benefit is that you can close port 3306 on the MySQL server that Webtix uses. If you want to use an SSH tunnel with Navicat, go to http://www.enginsite.com/tunnel_howto.htm Note: A VPN tunnel will do the same encrypting as is done here. However, VPN tunnels are usually a lot more complicated and can be expensive. Putty is free. Setting this up will only take you about 10 minutes. You can download Putty from http://www.chiark.greenend.org.uk/~sgtatham/putty/ 1. Start Putty. Since this is the first time you have run the program, you will see a blank screen: 2002-10 Center Stage Software 10: 41 Chapter 10 - Webtix 2. Enter the Host name (or IP address). Enter a description under Saved sessions and click on the Save button: 3. On the left side, click on Connection | SSH | Tunnels and enter the following information: Enter "3306" for "Source Port" and enter "localhost:3306" for "Destination". 10:42 2002-10 Center Stage Software Chapter 10- Webtix 4. Click "Add" button so that screen displays "L3306 localhost:3306" 5. You should have the session named in step 1. If you do not, click on Session | Saved sessions and give the connection a name. Click on the Save button to save the entry. 6. Open up the Sqlrdd.ini file with Notepad (not a word processor). Configure it to access localhost and save the file. For example, the file might look like this: 7. Open Putty. Log into the server with your name and password (this is your operating system name and password – not the MySQL one) 2002-10 Center Stage Software 10: 43 Chapter 10 - Webtix You are finished You now have an encrypted SSH tunnel. All computer between your computer and the server will be encrypted. Start Wintix (or Mintix or Tixsales). You will see you are logged into “Localhost” Keep Putty open and logged in as long as you are using the program. If you close Putty, Wintix will give a message, “Not connected to localhost.” To restart the SSH tunnel, use the following procedure: 1. Start Putty 2. Doubleclick on the name of the session you saved 3. Login into the server 4. Start Wintix (or Mintix or Tixsales) 10:44 2002-10 Center Stage Software Chapter 10- Webtix Setting up Webtix for arenas, ice hockey rinks, football stadiums, and other large areas Explanation: Up till now, all the seating charts have been for one chart for one date and time. This is fine for smaller organizations. However, once you get more than 2000 seats or so (in a proscenium) or 500 seats (in an arena) the chart gets too big to display as a monolithic unit. The solution is to break the chart into pieces. Sometimes, this is called a Multichart. With this method, the number of seats is unlimited. The record is 48,000 seats. How to get all those seats into Webtix: 1. The first step is to get an image of the arena. This image is what the customers will see. You do not want it to be a large image. That takes too long to load. A file 100K in size is about right. Your customers will click on a section of the image and be taken to the appropriate chart. For this example, we are using Freedom Hall in Louisville (a modest 26,000 seats). 2. The second step will be to map the sections with an HTML mapping tool. 3. The third step will be to put the mapped numbers into the plan’s data. 4. The final step is to put the image into the field shows.multichart_image field. Mapping the image (you will need a mapping tool). 2002-10 Center Stage Software 10: 45 Chapter 10 - Webtix Next step is to start mapping the image. You need to select the image and select the option draw a polygonal area (hot zone). Note: All images that you draw must be polygons. They must have at least 5 sides. Rectangles and circles will not work. It will look something like this. You will need to give the image a label when you are done. Give it a descriptive name. Go on to the next image. There is no limit to the number you can create. When you are finished, click on the tab to look at the html generated. You will see something like this: <img src="freehall.jpg" width="550" height="363" border="0" usemap="#ImageMap1"> <p> </p> <map name="ImageMap1"> <area shape="polygon" coords="338, 138, 309, 138, 301, 152, 302, 207, 313, 222, 339, 222" href="Center section"> <area shape="polygon" coords="473, 23, 341, 137, 344, 224, 406, 281, 478, 322, 545, 238, 545, 125, 514, 43" href="http://right side"> <area shape="polygon" coords="103, 8, 216, 143, 341, 136, 452, 20, 443, 4, 117, 5" href="http://top section"> <area shape="polygon" coords="85, 7, 218, 145, 212, 224, 149, 282, 59, 333, 8, 242, 9, 106" href="http://left side"> <area shape="polygon" coords="475, 347, 339, 225, 214, 225, 106, 341, 119, 355, 460, 353, 471, 346" href="http://bottom"> </map> Now, look at those coordinate numbers. Go into Wintix and click on Tools | Seating plans and select each plan. Put the numbers in where it asks for the map coordinates. Put only the numbers and commas in. Image mapping tools are simple programs. If you are interested in a free one, Google the phrase, “free image mapping software” 10:46 2002-10 Center Stage Software Chapter 10- Webtix Emailing a custom email form – specific for a show File names and variable names are case sensitive. Some terms: email_confirm.html Used for the consolidated cart – common data for all receipts email_confirmoneshow.html Show specific receipt. If you want a custom receipt, this text is what you put in master.emailform email_confirmmultishow.html Used when there is more than 1 show in the shopping cart. This is what gets sent out when consolidated receipt is set to true. To set it up: sendConsolidatedReceipt – must be set to false in Config.php. email_confirmoneshow.html needs to be modified and saved in master.emailform. The way it works: Webtix first looks in the master table in the field master.emailform. If there is nothing there, it creates the receipt from email_confirm.html which calls email_confirmoneshow.html To get to the section, you need to go into Wintix or Webtix. Webtix does it when you edit a show. Wintix does it when you edit a show and click on the Internet options button. Once you get to either section, you can paste your HTML in the field. 2002-10 Center Stage Software 10: 47 Chapter 10 - Webtix Installing the automated reporting feature Explanation: The reporting features built into Webtix are fine for most operations. However, you may want to automate the reports that get sent out. Promoters may want to have their reports sent to them. This feature is for you. First, you must tell Webtix that you want it to email you a report. Go into the reporting section to schedule the report to be sent out. Then, you are taken into the setup for the reporting: 10:48 2002-10 Center Stage Software Chapter 10- Webtix The next step is on your server. You need to tell the server to check for reports that need to be sent out. This done with crontab. Go to a command prompt (any user will do) and type: crontab –e A window will pop open asking you to enter the information. You need to create an entry according to the help file. Here are some examples. The first 2 entries put the output in a text file on a user's desktop. Capitalization is important here. Secure server: 0,5,10,15,20,25,30,35,40,45,50,55 * * * * wget --no-check-certificate -q -O https://localhost/ticketing/admin.php?page=batchProcess >> /home/centerstage/Desktop/cron_log.txt /ticketing/admin.php?page=batchProcess No site certificate installed: 0,5,10,15,20,25,30,35,40,45,50,55 * * * * wget -q -O - http://localhost/ticketing/admin.php? page=batchProcess >> /home/centerstage/Desktop/cron_log.txt Quiet mode 0,5,10,15,20,25,30,35,40,45,50,55 * * * * wget -q Notes The table, email_report_status has a variable: started_at The default value needs to be CURRENT_TIMESTAMP The table schedule_email_report has a variable: created_on The default value needs to be CURRENT_TIMESTAMP The editor used by default on many systems is the venerable vi. You are not supposed to like vi. Instead, the purpose of vi is to remind you how far the software industry has come in the last 20 years. in daemon mode, the cron simply runs to make sure the daemon is running. in my case, daemon would not start (don't know why) in config.php, there is a daemon setting, which we set to blank, which takes it out of daemon mode in order to check the status of the daemon: Run the command "ps aux | grep admin_daemonProcess.php". It will display the daemon processes in memory. 2002-10 Center Stage Software 10: 49 Chapter 10 - Webtix Custom changes in Webtix It is expected that you will be changing Webtix. You can modify any PHP files you like. However, put the modified files in the /ticketing/_custom subdirectory. When Webtix finds a file there, it will give that file priority. This is only for the PHP in the main subdirectory and the PHP and HTML in the /includes subdirectory. For instance, let's assume you want to modify events.php. You would copy the events.php to the /_custom subdirectory. Then, modify the copy of events.php. As long as the copy of events.php exists in the /_custom subdirectory, it will be run instead of the events.php in the main subdirectory. The big benefit is that if you make a mistake with your modified events.php, you can delete it. Webtix will revert to its default behavior. This feature allows you to make custom changes and have them show up. If you make a mistake, you will be able to erase the file you do not want. Then, Webtix behavior will revert to the default. This way, you can also get updates to the PHP scripts without affecting your custom changes. 10:50 2002-10 Center Stage Software Chapter 10- Webtix Customizing the online PDF ticket layout for Webtix5 A current version of NetBeans or Eclipse with the PHP plugin provide useful IDE's for developing/modifying PHP code. (VI and Emacs will work also.) The Webtix5 ticket-template is a PHP program that gets passed purchase-session values including show and performance id's. A knowledgeable programmer could use the purchasesession data as a test to determine a fork in the program for using alternative tickettemplates. With the correct customizations, it is possible for tickets to have different formatting for different shows. STEP #1 To format/customize the default PDF ticket: a) Copy the file "_includes/ticket_template.php" and place the copy into "_custom/_includes/ticket_template.php". Do not modify the original file. b) Begin customizing "_custom/_includes/ticket_template.php". OPTIONAL STEP #2 Ticket rendering functionality can also be modified by creating "_custom/_includes/libf_renderTicket.php". a) Copy the file "_includes/libf_renderTicket.php" and place the copy into "_custom/_includes/libf_renderTicket.php". Do not modify the original file. b) Begin customizing "_custom/_includes/libf_renderTicket.php". OPTIONAL STEP #3 Once you have customized functionality for extra templates, you can create those extra templates by following steps similar to #1: a) Every new template should have a new name. For demonstration purposes replace the phrase "example" with something more appropriate. b) Copy the file "_includes/ticket_template.php" and place the copy into "_custom/_includes/ticket_template_example.php". Do not modify the original file. c) Have the template included using "require('_includes/ticket_template_example.php');" in your code even though the file actually exists only in "_custom/_includes/" directory. d) Begin customizing "_custom/_includes/ticket_template_example.php". The default functionality of Webtix is to enable/disable online PDF functionality via a configuration setting in "_custom/_includes/config.php". The on/off PDF setting affects all shows and performances online. This functionality can also be customized in the "_custom" directory. 2002-10 Center Stage Software 10: 51 Chapter 10 - Webtix Bar codes on print-at-home tickets In Config.php, the render_pdf_tickets variable needs to be true. The ticket gets generated in process.php. Don't change this file. For changes to the ticket format, ticket_template.php is where you need to make the changes. If you are using a general admission show, the contents of the bar code field is the sale number. If you are using reserved seats, the bar code has the auth field (a random set of numbers and letters) and the sale number. The bar code is generated in libf_renderTicket.php. On lines 32-35 the data string (auth and chartlist_id) gets built. The text gets passed to the C39Object which generates the bar code .png in the temp_files subdirectory. The best practice for customization is to copy libf_renderTicket.php to /custom/includes/. Then, updates to Webtix will not interfere with your customizations. There are a couple situations where scanning tickets pays for itself. 1. Chargebacks: you can prove the ticket was used 2. Students at universities claim to have attended. A scan report will tell you they have or have not been in. 3. Counterfeit tickets: bar coded tickets stop the problem 4. You get a report of people who purchased tickets and did not attend. If season ticket holders do not attend, they are not likely to renew their subscriptions. These people need a call. How much does it cost? • Corded 2D scanners (connected to a computer) are about $600 each • Wireless scanners for 2D bar codes are about $1,400 • You also need a connection to your server. This can be either a wifi connection over the internet or else a wireless connection to your local network. For scanning tickets with ScanTix, see the document: BarCodeScanning.pdf 10:52 2002-10 Center Stage Software Chapter 10- Webtix Emailing with an SMTP server SMTP settings via Webtix uses the module php-sockets which creates a direct socket connection to your SMTP server. Webtix also requires host and login email addresses to use its internal SMTP settings. If you have trouble with php-sockets module or the network requires additional domain authentication, you should instead have Webtix set to "mail". Then alter the PHP.ini with appropriate SMTP settings. Finally reboot PHP so that the new PHP.ini settings get implemented. File "php.ini": ... [mail function] ; For Win32 only. SMTP = youremailserver.example.com smtp_port = 25 ... Information from: http://us.php.net/manual/en/mail.configuration.php Some definitions SMTP string Used under Windows only: host name or IP address of the SMTP server PHP should use for mail sent with the mail() function. smtp_port int Used under Windows only: Number of the port to connect to the server specified with the SMTP setting when sending mail with mail(); defaults to 25. Only available since PHP 4.3.0. Other problems may include a firewall, domain controller, or additional authentication requirements to connect to your SMTP server within your network that is causing lack of permission to send email. 2002-10 Center Stage Software 10: 53 Chapter 10 - Webtix Webtix server optimization example Disclaimer: Every server is a little different. The process is to test, make changes and re-test. This section is only a guide. MySQL will work just fine with the default settings- approximately the same speed that it did with the old dbf files. However, a MySQL database server can run a lot faster if you do a little tuning. Linux example The initial settings had been configured for a developer workstation, not a dedicated server. This was changed to the following settings. File: /etc/my.cnf OS: Suse Enterprise Linux 10 key_buffer = 32M max_allowed_packet = 4M table_cache = 256 sort_buffer_size = 5M read_buffer_size = 1M read_rnd_buffer_size = 3M innodb_buffer_pool_size = 1536M innodb_additional_mem_pool_size = 512M The physical memory was 4GB. Because the server only has a 32-bit OS and motherboard chipset, only 3.3GB of memory is available for use. After optimization, MySQL was using about 452MB of system memory and was operating much more quickly. Windows 2003 server with 2G of memory innodb_additional_mem_pool_size = 250M innodb_buffer_pool_size = 750M innodb_flush_log_at_trx_commit = 1 innodb_log_buffer_size = 8M innodb_log_file_size = 5M innodb_lock_wait_timeout = 50 Notes: 1. Do a mysqldump to back up everything before you start. 2. Stop the MySQL daemon before you modify the my.cnf (my.ini on windows) 3. The innodb_log_file_size setting must match the size of the log files in the \data subdirectory. These files are ib_logfile0 and ib_logfile1. If they do not match, MySQL will not start. The safest thing is to rename the files before you re-start the daemon. 4. The actual data is in the ibdata1 file. Don't mess with it. 5. If you have problems, look in the .err file. Do a search for that error on the internet. 6. If you are not careful, you may need to re-install MySQL. You will need to restore from the backup you made in step 1 10:54 2002-10 Center Stage Software Chapter 10- Webtix 500 internal server errors with Windows This error indicates a system administration problem that should be resolved by the server administrator. A 500 Internal Server Error message can occur for many reasons. Microsoft configures PHP to run as a FastCGI, which is normally the preferred way to run PHP. However IIS's default configuration has PHP error messages resulting in uninformative/ambiguous 500-internal-server-error in IIS. PHP error messages could result from incorrect syntax in customizations, missing PHP modules, incorrect file permissions, plus more. To track down the problem cause for resolution, you will need to enable error-reporting and error-logging in PHP. In your PHP.ini file, please edit: error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR log_errors = On error_log = C:\php_error_log.txt (Make sure that PHP/FastCGI can write to C:\php_error_log.txt or another error log file location.) Restart PHP and IIS. Then please edit your "ticketing/_custom/_includes/config.php" file with: error_reporting(E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR); This will enable a more detailed error logging in PHP for Webtix5. You should also have some useful data in IIS's FastCGI logs. Make sure that PHP is able to write to it's configured cache/temporary directory. The location of this temporary directory can be configured in the PHP.ini file. If IIS was incorrectly configured with FastCGI and PHP, any MINOR PHP warning might generate a 500 server error instead of allowing PHP to catch the warning/error and process accordingly. If IIS7 was unable to communicate via FastCGI protocol to a PHP process, a 500 server error would occur. If the Windows server had insufficient memory to handle IIS7, FastCGI, PHP, Webtix, plus other items on the server... a 500 server error would occur. If any high-demand caused bottle-neck of server resources occurred, a 500 server error would occur. If a PHP engine binary corrupted in memory (for whatever cause...), a 500 server error would occur. Plus other reasons could cause a 500 server error. Microsoft provides resources at MSDN.com on administering IIS server software and what to look for when a 500 internal server error occurs. 2002-10 Center Stage Software 10: 55 Chapter 10 - Webtix To find the cause/solution to a 500 Internal Server error: 1. View the server's IIS logs. The log files should have more detailed information regarding cause. 2. View the server's FastCGI logs. The FastCGI log files should have more detailed information regarding cause IF the problem occurred during FastCGI processing. 3. View the server's PHP logs. The log files should have more detailed information regarding cause IF the problem occurred in the PHP engine. 4. View the server's logs for possible problems that might have been occurring at the same time. 5. View the network logs to see what demand was occurring on the webserver (IIS). 6. During off-hours when users are unlikely to visit the site, attempt a load test on the server to look for possible bottle-necks of server resources and unoptimized server configurations. 7. Don't forget to check your code. HTML errors can cause IIS to crash. 10:56 2002-10 Center Stage Software Chapter 10- Webtix Setting up Webtix to use a $3.50 surcharge per order for a web order. You need to do 2 things: 1. Set up the payment type and service charges the say you want 2. Tell Webtix to use that payment type Click on File | Payment types and set up the payment type the way you want: Click on Show | Edit a show | <select the show> | Internet options | Domains | <select internet>. Tell the internet domain to use the payment type you just entered. 2002-10 Center Stage Software 10: 57 Chapter 10 - Webtix The result is the charges you wanted: 10:58 2002-10 Center Stage Software Chapter 10- Webtix Updating Webtix Here is the recommended update procedure: 1. Back up your php in a separate place (like a CD) 2. Rename your old /ticketing subdirectory 3. Unzip the new files into a new /ticketing subdirectory 4. Start a browser and go to your website and start a sale. You will be led through the installation process. 5. You will notice some new fields are required. Some old ones have been changed. Generally speaking, the fields that are bold must be corrected. The other fields should be corrected. If you cannot remember your old settings, go to the renamed subdirectory and you can find the old settings in /<renamed subdirectory>/_custom/_includes/config.php. When you are done, you will have the latest Webtix on your server. 6. Re-install your custom changes in the /ticketing/_custom folder. 2002-10 Center Stage Software 10: 59 Chapter 10 - Webtix Running Webtix with Fastcgi Explanation: An apache server spawns a process every time it gets a hit. Fastcgi keeps one process in memory and uses that process to process many requests. Our estimation indicates the speed of a web server is doubled. The instructions here are for Apache on a Linux server. FastCGI will also run on Lighttpd and IIS. Using Yast or Yum, install: mod_fcgid php-fastcgi in etc/apache2/conf.d/fcgid_conf Uncomment the statements at the bottom to activate the <FilesMatch> section Add Initenv=PHP_FCGI_CHILDREN = 16 to 32 Add Initenv=PHP_FCGI_MAX_REQUESTS=500 to 1000 in /etc/sysconfig/apache2 a2dismod php4 a2dismod php5 a2enmod fcgid (a2enmod, a2dismod - enable or disable an apache2 module) or edit /etc/sysconfig/apache2 remove reference to php 4 and 5 remove php5 and add reference to fcgid in the APACHE_MODULES line edit /etc/php5/fastcgi/php.ini make execution time 60-120 seconds /etc/init.d/apache2 stop /etc/init.d/apache2 start check with phpInfo&version=<whatever> If there are any errors, look in /var/log/apache2/error_log A more complete set of instructions is at: http://typo3.org/development/articles/using-php-with-mod-fcgid 10:60 2002-10 Center Stage Software Chapter 10- Webtix XAMPP – Apache, MySQL, PHP in one package Given that Apache, MySQL and PHP are the most popular development tools for dynamic web pages, it is not surprising that there are several packages of these tools. Of the bunch, XAMPP seems to be the most complete and best supported. The web site is ApacheFriends.org. When uninstalling XAMPP, make sure that all the XAMPP modules are stopped and all XAMPP modules installed as a service have been uninstalled and close the Control Panel then run the uninstall script and make sure that the xampp directory has been deleted, Don't try and reinstall by overwriting the original xampp directory as this will cause your installation to fail. Tip 1 - next time you do an installation try and install to C:\ root directory as this often alleviates path issues - your ServerRoot would then look like this: ServerRoot "C:/xampp/apache/bin" Tip 2 - The zipped versions doesn't mess with the Windows installer so you can extract XAMPP to any location you like and then run the setup_xampp.bat file and your installation paths will all be set correctly. After running the bat file, manually check line 57 of your httpd.conf file in a text editor and see if it looks like this perhaps: ServerRoot "C:/server/xampp/apache" If not then change it to look like the above. Make sure any other paths in the httpd.conf file show your XAMPP installation path "C:/server/xampp" in much the same format as the above ServerRoot path. Try and start Apache again after saving the file if you made any changes - always make a backup of conf and ini files before editing. The other issue with MySQL may also be cleaned up by running the setup_xampp.bat file but if not then drag the C:\server\xampp\mysql\bin\my.cnf (it may be just called my and look like a link) into your text editor and check the paths look like this: # The MySQL server [mysqld] basedir="C:/server/xampp/mysql" tmpdir="C:/server/xampp/tmp" datadir="C:/server/xampp/mysql/data" And for any other paths in this file - also make sure the tmpdir exists. Save the file if you changed anything and restart MySQL. The above may not help but you have an obvious path issue from the errors you posted in your original post. 2002-10 Center Stage Software 10: 61 Chapter 10 - Webtix XAMPP notes: Use open ssl to generate the certificate for XAMPP. The included cert does not have enough characters With open SSL, you need to manually configure the path or execute the commands directly in the \XAMPP\Apache bin directory. Make sure CURL is activated in php.ini (disabled in the default settings) How to configure XAMPP to use Gmail instead of the built-in Mercury mail service Configure Webtix to use Mail (not SMTP). - in /ticketing/_custom_includes/config.php Open php.ini to disable smtp Instead, use XAMPP's sendmail module In the xampp/sendmail/sendmail.ini Create account type gmail and set it up to have authentication, with the SMTP hostname login, from address, and password Use GMail as the default account (previously set up) Comment out any other mail server Restart Apache (because of the PHP changes) This results in Webtix to PHP mail. PHP mail to XAMPP sendmail. XAMPP sendmail goes to GMail. 10:62 2002-10 Center Stage Software