Blank page on manual install

Ask your questions regarding TimeTrex installation here.
Locked
merpcore
Posts: 9
Joined: Fri Nov 16, 2012 11:08 am

Blank page on manual install

Post by merpcore »

os: Ubuntu 12.10 server 32bit
apache: 2.2.2
php: 5.2
Postgres: 9.1

Here's what I've done:
1. Downloaded the latest manual install, unzipped to a subdir of /var/www
2. Set up postgres user and database
3. Set up timetrex.ini.php database info, moved dirs (cache,storage,log) into /var/www/subdir
4. Created these directories, recursive 777 permissions on /var/www/subdir for troublehsooting
5. Enabled PHP error display and logging. Added timezone to php.ini.

When running install.php through the browser, it redirects to http://mserv/interface/install/License. ... nstaller=0 and displays a blank page, source is also blank.

It seems to be able to access the postgres db and php seems to be running fine, as accessing http://hostname/ in my browser, it goes through a loading screen, then gets stuck on 'processing'. If I botch the password on purpose, it starts moaning about connecting to postgres.

PHP log is empty and I don't see anything related in the apache logs either.

I've enabled timetrex debugging and got the following log after cleaning it and only running install.php:

Code: Select all

---------------[ 16-Nov-2012 13:44:56 -0500 (PID: 2672) ]---------------
DEBUG [L0388] [438ms]:	<b>[Function]()</b>: URI: /api/amf/api.php IP Address: 192.168.1.4<br>
DEBUG [L0390] [438ms]:	<b>[Function]()</b>: Version: 5.1.0 Edition: 10 Production: 0 Demo Mode: 0<br>
DEBUG [L0167] [586ms]:	<b>TTDate::setTimeZone()</b>: Setting TimeZone: America/New_York<br>
DEBUG [L0174] [601ms]:	<b>SabreAMF_CallbackServer::exec()</b>: Protocol: AMF0<br>
DEBUG [L0052] [601ms]:	<b>ServiceMapper::unauthenticatedInvokeService()</b>: Service: core.APIProgressBar Method: get<br>
DEBUG [L0069] [601ms]:	<b>ServiceMapper::invokeService()</b>: Service: APIAuthentication Method: get Class: APIAuthentication<br>
DEBUG [L0077] [606ms] Array: <b>ServiceMapper::invokeService()</b>: Arguments: 
<pre>array(1) {
  [0]=>
  string(36) "1CA4EF8D-3BE3-CDED-EEC7-0A841E4DD6A6"
}

</pre><br>
DEBUG [L0199] [608ms]:	<b>[Function]()</b>: Server Response Time: 0.60781192779541<br>
---------------[ 16-Nov-2012 13:44:56 -0500 (PID: 2672) ]---------------

---------------[ 16-Nov-2012 13:44:58 -0500 (PID: 2672) ]---------------
DEBUG [L0388] [980ms]:	<b>[Function]()</b>: URI: /api/amf/api.php IP Address: 192.168.1.4<br>
DEBUG [L0390] [980ms]:	<b>[Function]()</b>: Version: 5.1.0 Edition: 10 Production: 0 Demo Mode: 0<br>
DEBUG [L0167] [1133ms]:	<b>TTDate::setTimeZone()</b>: Setting TimeZone: America/New_York<br>
DEBUG [L0174] [1148ms]:	<b>SabreAMF_CallbackServer::exec()</b>: Protocol: AMF0<br>
DEBUG [L0052] [1148ms]:	<b>ServiceMapper::unauthenticatedInvokeService()</b>: Service: core.APIProgressBar Method: get<br>
DEBUG [L0069] [1148ms]:	<b>ServiceMapper::invokeService()</b>: Service: APIAuthentication Method: get Class: APIAuthentication<br>
DEBUG [L0077] [1152ms] Array: <b>ServiceMapper::invokeService()</b>: Arguments: 
<pre>array(1) {
  [0]=>
  string(36) "1CA4EF8D-3BE3-CDED-EEC7-0A841E4DD6A6"
}

</pre><br>
DEBUG [L0199] [1155ms]:	<b>[Function]()</b>: Server Response Time: 1.1539781093597<br>
---------------[ 16-Nov-2012 13:44:58 -0500 (PID: 2672) ]---------------

---------------[ 16-Nov-2012 13:44:59 -0500 (PID: 2672) ]---------------
DEBUG [L0388] [509ms]:	<b>[Function]()</b>: URI: /api/amf/api.php IP Address: 192.168.1.4<br>
DEBUG [L0390] [509ms]:	<b>[Function]()</b>: Version: 5.1.0 Edition: 10 Production: 0 Demo Mode: 0<br>
DEBUG [L0167] [657ms]:	<b>TTDate::setTimeZone()</b>: Setting TimeZone: America/New_York<br>
DEBUG [L0174] [672ms]:	<b>SabreAMF_CallbackServer::exec()</b>: Protocol: AMF0<br>
DEBUG [L0052] [672ms]:	<b>ServiceMapper::unauthenticatedInvokeService()</b>: Service: core.APIProgressBar Method: get<br>
DEBUG [L0069] [672ms]:	<b>ServiceMapper::invokeService()</b>: Service: APIAuthentication Method: get Class: APIAuthentication<br>
DEBUG [L0077] [676ms] Array: <b>ServiceMapper::invokeService()</b>: Arguments: 
<pre>array(1) {
  [0]=>
  string(36) "1CA4EF8D-3BE3-CDED-EEC7-0A841E4DD6A6"
}

</pre><br>
DEBUG [L0199] [679ms]:	<b>[Function]()</b>: Server Response Time: 0.6781690120697<br>
---------------[ 16-Nov-2012 13:44:59 -0500 (PID: 2672) ]---------------

---------------[ 16-Nov-2012 13:45:01 -0500 (PID: 2672) ]---------------
DEBUG [L0388] [54ms]:	<b>[Function]()</b>: URI: /api/amf/api.php IP Address: 192.168.1.4<br>
DEBUG [L0390] [54ms]:	<b>[Function]()</b>: Version: 5.1.0 Edition: 10 Production: 0 Demo Mode: 0<br>
DEBUG [L0167] [203ms]:	<b>TTDate::setTimeZone()</b>: Setting TimeZone: America/New_York<br>
DEBUG [L0174] [218ms]:	<b>SabreAMF_CallbackServer::exec()</b>: Protocol: AMF0<br>
DEBUG [L0052] [218ms]:	<b>ServiceMapper::unauthenticatedInvokeService()</b>: Service: core.APIProgressBar Method: get<br>
DEBUG [L0069] [218ms]:	<b>ServiceMapper::invokeService()</b>: Service: APIAuthentication Method: get Class: APIAuthentication<br>
DEBUG [L0077] [222ms] Array: <b>ServiceMapper::invokeService()</b>: Arguments: 
<pre>array(1) {
  [0]=>
  string(36) "1CA4EF8D-3BE3-CDED-EEC7-0A841E4DD6A6"
}

</pre><br>
DEBUG [L0199] [224ms]:	<b>[Function]()</b>: Server Response Time: 0.22393703460693<br>
---------------[ 16-Nov-2012 13:45:01 -0500 (PID: 2672) ]---------------

---------------[ 16-Nov-2012 13:45:02 -0500 (PID: 2672) ]---------------
DEBUG [L0388] [557ms]:	<b>[Function]()</b>: URI: /api/amf/api.php IP Address: 192.168.1.4<br>
DEBUG [L0390] [558ms]:	<b>[Function]()</b>: Version: 5.1.0 Edition: 10 Production: 0 Demo Mode: 0<br>
DEBUG [L0167] [719ms]:	<b>TTDate::setTimeZone()</b>: Setting TimeZone: America/New_York<br>
DEBUG [L0174] [734ms]:	<b>SabreAMF_CallbackServer::exec()</b>: Protocol: AMF0<br>
DEBUG [L0052] [734ms]:	<b>ServiceMapper::unauthenticatedInvokeService()</b>: Service: core.APIProgressBar Method: get<br>
DEBUG [L0069] [734ms]:	<b>ServiceMapper::invokeService()</b>: Service: APIAuthentication Method: get Class: APIAuthentication<br>
DEBUG [L0077] [738ms] Array: <b>ServiceMapper::invokeService()</b>: Arguments: 
<pre>array(1) {
  [0]=>
  string(36) "1CA4EF8D-3BE3-CDED-EEC7-0A841E4DD6A6"
}

</pre><br>
DEBUG [L0199] [740ms]:	<b>[Function]()</b>: Server Response Time: 0.73980402946472<br>
---------------[ 16-Nov-2012 13:45:02 -0500 (PID: 2672) ]---------------

---------------[ 16-Nov-2012 13:45:04 -0500 (PID: 2672) ]---------------
DEBUG [L0388] [54ms]:	<b>[Function]()</b>: URI: /api/amf/api.php IP Address: 192.168.1.4<br>
DEBUG [L0390] [54ms]:	<b>[Function]()</b>: Version: 5.1.0 Edition: 10 Production: 0 Demo Mode: 0<br>
DEBUG [L0167] [201ms]:	<b>TTDate::setTimeZone()</b>: Setting TimeZone: America/New_York<br>
DEBUG [L0174] [216ms]:	<b>SabreAMF_CallbackServer::exec()</b>: Protocol: AMF0<br>
DEBUG [L0052] [216ms]:	<b>ServiceMapper::unauthenticatedInvokeService()</b>: Service: core.APIProgressBar Method: get<br>
DEBUG [L0069] [216ms]:	<b>ServiceMapper::invokeService()</b>: Service: APIAuthentication Method: get Class: APIAuthentication<br>
DEBUG [L0077] [221ms] Array: <b>ServiceMapper::invokeService()</b>: Arguments: 
<pre>array(1) {
  [0]=>
  string(36) "1CA4EF8D-3BE3-CDED-EEC7-0A841E4DD6A6"
}

</pre><br>
DEBUG [L0199] [223ms]:	<b>[Function]()</b>: Server Response Time: 0.222491979599<br>
---------------[ 16-Nov-2012 13:45:04 -0500 (PID: 2672) ]---------------

---------------[ 16-Nov-2012 13:45:05 -0500 (PID: 2731) ]---------------
DEBUG [L0388] [555ms]:	<b>[Function]()</b>: URI: /api/amf/api.php IP Address: 192.168.1.4<br>
DEBUG [L0390] [555ms]:	<b>[Function]()</b>: Version: 5.1.0 Edition: 10 Production: 0 Demo Mode: 0<br>
DEBUG [L0167] [720ms]:	<b>TTDate::setTimeZone()</b>: Setting TimeZone: America/New_York<br>
DEBUG [L0174] [738ms]:	<b>SabreAMF_CallbackServer::exec()</b>: Protocol: AMF0<br>
DEBUG [L0052] [738ms]:	<b>ServiceMapper::unauthenticatedInvokeService()</b>: Service: core.APIProgressBar Method: get<br>
DEBUG [L0069] [739ms]:	<b>ServiceMapper::invokeService()</b>: Service: APIAuthentication Method: get Class: APIAuthentication<br>
DEBUG [L0077] [743ms] Array: <b>ServiceMapper::invokeService()</b>: Arguments: 
<pre>array(1) {
  [0]=>
  string(36) "1CA4EF8D-3BE3-CDED-EEC7-0A841E4DD6A6"
}

</pre><br>
DEBUG [L0199] [746ms]:	<b>[Function]()</b>: Server Response Time: 0.74532008171082<br>
---------------[ 16-Nov-2012 13:45:05 -0500 (PID: 2731) ]---------------
merpcore
Posts: 9
Joined: Fri Nov 16, 2012 11:08 am

Re: Blank page on manual install

Post by merpcore »

timetrex.ini.php:

Code: Select all

;
; TimeTrex Configuration File
; *Linux* Example
;
;

;
; System paths. NO TRAILING SLASHES!
;
[path]
;URL to TimeTrex web root directory. ie: http://your.domain.com/<*BASE_URL*>
;DO NOT INCLUDE http://your.domain.com, just the directory AFTER your domain
base_url = /interface

;
;log directory
;
;Linux
log = /var/www/kmctimetrex/log

;
;Misc storage, for attachments/images
;
;Linux
storage = /var/www/kmctimetrex/storage

;
;Full path and name to the PHP CLI Binary
;
;Linux
php_cli = /usr/bin/php



;
; Database connection settings. These can be set from the installer.
;
[database]
;type = mysql
type = postgres8

host = localhost
database_name = timetrex
user = timetrex
password = DERPDERPDERPDERP

;
; Email delivery settings.
;
[mail]
;Least setup, deliver email through TimeTrex's email relay via SOAP (HTTP port 80)
delivery_method = soap

;Deliver email through local sendmail command specified in php.ini
;delivery_method = mail

;Deliver email through remote SMTP server with the following settings.
;delivery_method = smtp
;smtp_host=smtp.gmail.com
;smtp_port=587
;smtp_username=timetrex@gmail.com
;smtp_password=testpass123


;
; Cache settings
;
[cache]
enable = TRUE
;Linux
dir = /var/www/kmctimetrex/tmp



[debug]
;Set to false if you're debugging
production = FALSE
enable = TRUE
enable_display = TRUE
buffer_output = TRUE
enable_log = TRUE
verbosity = 11



[other]
; Force all clients to use SSL.
force_ssl = FALSE
installer_enabled = TRUE
primary_company_id = 0
hostname = localhost

default_interface = flex

;WARNING: DO NOT CHANGE THIS AFTER YOU HAVE INSTALLED TIMETREX.
;If you do it will cause all your passwords to become invalid,
;and you may lose access to some encrypted data.
salt = 0


































;<?php if (; //Cause parse error to hide from prying eyes, just in case. DO NOT REMOVE?>
shaunw
Posts: 7839
Joined: Tue Sep 19, 2006 2:22 pm

Re: Blank page on manual install

Post by shaunw »

If it got past the install.php file, it sounds like there is a syntax error in your timetrex.ini.php. The most common cause of this is special characters in your database password that aren't wrapped in double quotes, ie:

Code: Select all

password = test!1(me
That would cause a syntax failure, it can be corrected by doing this:

Code: Select all

password = "test!1(me"
merpcore
Posts: 9
Joined: Fri Nov 16, 2012 11:08 am

Re: Blank page on manual install

Post by merpcore »

The password is all normal characters, have tried it no quotes, single quotes, and double quotes.. no dice. Just went though the timetrex.ini.php again looking for syntax errors, no luck, same behavior.

Also, I'm pretty sure I have all the dependencies covered: php-pear php5-pgsql php5-gd libapache2-mod-php5.
shaunw
Posts: 7839
Joined: Tue Sep 19, 2006 2:22 pm

Re: Blank page on manual install

Post by shaunw »

Can you attach a copy of your php.ini file?
merpcore
Posts: 9
Joined: Fri Nov 16, 2012 11:08 am

Re: Blank page on manual install

Post by merpcore »

Using echoes, I think I've traced it (starting in install.php) to the line: "$clf = new CompanyListFactory();" in /includes/Interface.inc.php

Any ideas?

php.ini is attached.
Attachments
php.ini
(64.34 KiB) Downloaded 808 times
shaunw
Posts: 7839
Joined: Tue Sep 19, 2006 2:22 pm

Re: Blank page on manual install

Post by shaunw »

In the includes/global.inc.php file, search for:

Code: Select all

@include( $file_name );
Replace it with:

Code: Select all

include( $file_name );
That may allow you to see more error messages. If you are seeing echo statements up to "$clf = new CompanyListFactory();", its likely failing trying to load the classes/modules/company/CompanyListFactory.class.php file.

You may want to enable display_startup_errors in your php.ini file as well.
merpcore
Posts: 9
Joined: Fri Nov 16, 2012 11:08 am

Re: Blank page on manual install

Post by merpcore »

Thanks, removing the @ yielded this:

Code: Select all

Fatal error: Call-time pass-by-reference has been removed in /var/www/kmctimetrex/classes/modules/company/CompanyFactory.class.php on line 3222
Line in question:

Code: Select all

	$this->getCreatedAndUpdatedColumns( &$data, $include_columns );
Last edited by merpcore on Fri Nov 16, 2012 2:41 pm, edited 2 times in total.
shaunw
Posts: 7839
Joined: Tue Sep 19, 2006 2:22 pm

Re: Blank page on manual install

Post by shaunw »

Whats the full and exact version of PHP that you are using?
merpcore
Posts: 9
Joined: Fri Nov 16, 2012 11:08 am

Re: Blank page on manual install

Post by merpcore »

So, looks like webmin was wrong, putting phpinfo in a file displays 5.4.6, and explains the issue in that line.
shaunw
Posts: 7839
Joined: Tue Sep 19, 2006 2:22 pm

Re: Blank page on manual install

Post by shaunw »

Yes, TimeTrex doesn't support PHP v5.4.x yet.
merpcore
Posts: 9
Joined: Fri Nov 16, 2012 11:08 am

Re: Blank page on manual install

Post by merpcore »

Thanks for the help, I'll roll back to 5.3
merpcore
Posts: 9
Joined: Fri Nov 16, 2012 11:08 am

Re: Blank page on manual install

Post by merpcore »

Rolled back to 5.3.10, and got a new error:

Code: Select all

Notice: Undefined variable: install_obj in /var/www/kmctimetrex/interface/install/License.php on line 84

Fatal error: Call to a member function getFullApplicationVersion() on a non-object in /var/www/kmctimetrex/interface/install/License.php on line 84
Lines starting at 84:

Code: Select all

$handle = fopen('http://www.timetrex.com/'.URLBuilder::getURL( array('v' => $install_obj->getFullApplicationVersion() , 'page' => 'license' ), 'pre_install.php'), "r");
fclose($handle);
Full log:

Code: Select all

---------------[ 16-Nov-2012 18:04:38 -0500 (PID: 1612) ]---------------
DEBUG [L0388] [9ms]:	<b>[Function]()</b>: URI: /interface/install/License.php?external_installer=0 IP Address: 192.168.1.4<br>
DEBUG [L0390] [9ms]:	<b>[Function]()</b>: Version: 5.1.0 Edition: 10 Production: 0 Demo Mode: 0<br>
DEBUG [L0167] [60ms]:	<b>TTDate::setTimeZone()</b>: Setting TimeZone: America/New_York<br>
DEBUG [L0088] [107ms]:	<b>[Function]()</b>: Bypassing Authentication<br>
DEBUG [L0438] [111ms]:	<b>TTi18n::chooseBestLocale()</b>: Choosing Best Locale...<br>
DEBUG [L0409] [111ms]:	<b>TTi18n::getBrowserLanguage()</b>: HTTP_ACCEPT_LANGUAGE: en-us,en;q=0.5<br>
DEBUG [L0492] [111ms]:	<b>TTi18n::chooseBestLocale()</b>: cSetting Locale: en_US<br>
DEBUG [L0351] [112ms]:	<b>TTi18n::setLocale()</b>: Generated/Passed In Locale: en_US<br>
DEBUG [L0287] [112ms]:	<b>TTi18n::generateLocale()</b>: Array of Locales to try in order for "en_US": en_US,en_US.UTF-8,en,en.UTF-8<br>
DEBUG [L0245] [112ms]:	<b>TTi18n::tryLocale()</b>: Found valid locale: en_US.UTF-8<br>
DEBUG [L0354] [112ms]:	<b>TTi18n::setLocale()</b>: Attempting to set Locale(s) to: en_US.UTF-8 Category: 6 Current Locale: <br>
DEBUG [L0360] [112ms]:	<b>TTi18n::setLocale()</b>: Setting currency/numeric Locale to: en_US.UTF-8<br>
DEBUG [L0373] [119ms]:	<b>TTi18n::setLocale()</b>: Setting translator to normalized locale: en_US<br>
DEBUG [L0393] [119ms]:	<b>TTi18n::setLocale()</b>: Set Master Locale To: en_US.UTF-8<br>
DEBUG [L0492] [119ms]:	<b>TTi18n::chooseBestLocale()</b>: cSetting Locale: en<br>
DEBUG [L0351] [119ms]:	<b>TTi18n::setLocale()</b>: Generated/Passed In Locale: en<br>
DEBUG [L0287] [119ms]:	<b>TTi18n::generateLocale()</b>: Array of Locales to try in order for "en": en,en.UTF-8,en_US,en_US.UTF-8<br>
DEBUG [L0245] [119ms]:	<b>TTi18n::tryLocale()</b>: Found valid locale: en_US.UTF-8<br>
DEBUG [L0354] [119ms]:	<b>TTi18n::setLocale()</b>: Attempting to set Locale(s) to: en_US.UTF-8 Category: 6 Current Locale: en_US.UTF-8<br>
DEBUG [L0513] [119ms]:	<b>TTi18n::chooseBestLocale()</b>: Unable to find and set a locale.<br>
DEBUG [L1630] [127ms]:	<b>Misc::detectMobileBrowser()</b>: User Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:15.2) Gecko/20121028 Firefox/15.2.1-x64 PaleMoon/15.2.1-x64 Retval: <br>
DEBUG [L0084] [130ms]:	<b>Debug::ErrorHandler()</b>: PHP ERROR - NOTICE(8): Undefined variable: install_obj File: /var/www/kmctimetrex/interface/install/License.php Line: 84<br>
DEBUG [L0084] [130ms]:	<b>Debug::Shutdown()</b>: PHP ERROR - FATAL(1): Call to a member function getFullApplicationVersion() on a non-object File: /var/www/kmctimetrex/interface/install/License.php Line: 84<br>
DEBUG [L0184] [130ms]:	<b>Debug::Text()</b>: Detected PHP errors (2), emailing log...<br>
DEBUG [L0184] [130ms]:	<b>Debug::Text()</b>: ---------------[ 16-Nov-2012 18:04:38 -0500 (PID: 1612) ]---------------<br>
---------------[ 16-Nov-2012 18:04:38 -0500 (PID: 1612) ]---------------
Last edited by merpcore on Fri Nov 16, 2012 4:10 pm, edited 1 time in total.
shaunw
Posts: 7839
Joined: Tue Sep 19, 2006 2:22 pm

Re: Blank page on manual install

Post by shaunw »

Have you reverted back to the original unmodified TimeTrex files as well?
merpcore
Posts: 9
Joined: Fri Nov 16, 2012 11:08 am

Re: Blank page on manual install

Post by merpcore »

That seems to have done the trick, thanks again!
Locked