Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Hosting Requirements /

What you need to consider when choosing a hosting provider and plan.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Host-Europe SSS 2.4.0 and sqlite fails


Go to End
Reply


11 Posts   3284 Views

Avatar
gaston

Community Member, 24 Posts

10 June 2010 at 10:09pm

Salut,
I just tried to install SS 2.4.0 with sqlite on host-europe and it fails when creating the database file.
In the initial check, it tries to write to /is/<account-subdir>/www/CMS/assets/DB successfully, but in the installation phase it fails on line 620 on the DB creation
Using .DB is not permitted at host-europe.
Using another location under the tree above (i.e. /is/<account-subdir>/DB) is not accepted by the install routine as well as any other subdirectory other than under /is/<account-subdir>/www/CMS/assets.
I have tried all with chmod 777 without success
Looks to me like an internal php code error

Ciao, Mathias
PS: Switching to MySQL works, so it is an issue with the write access for the sqlite db file

Avatar
apiening

Community Member, 60 Posts

11 June 2010 at 11:36am

Salut gaston,

if you can't move the db file out of reach for browsers and you are not allowed to use foldernames preceeded by dots you might want use a regular foldername and put an .htaccess file into it containing:

<code>
deny from all
</code>

to protect your database file from unauthorised access. however read/write access to the location of the db file as well as to the file itself must be granted to the the webserver.

line 620 of Database.php is just the command to trigger the error. can you give me the whole backtrace that comes with the error?

Cheers

Andy

Avatar
gaston

Community Member, 24 Posts

12 June 2010 at 9:49pm

Salut Andy,
here the complete protocol of my actions. I removed site specific information anreplaced them with xxxx. This should not have an impact on the error

SilverStripe: 2.4.0
sqlite: sqlite3-trunk-r106099.tar.gz
sqlite renamed to sqlite only (removing the trunk information)
upload to host-europe into directory SStest using filezilla 3.3.2.1, transfertyp automatic
calling http://www.<domain>.de/SStest
chmod 777 .htaccess in SStest
chmod 777 assets
chmod 777 mysite/_config.php
selecting sqlite database
absolute path:
/is/htdocs/wpxxxxxxx_LAX2FF6GKA/www/SStest/assets/.db
mkdir .db
error message in install.php:
That username/password doesn't work: Cannot secure path through .htaccess: "/is/htdocs/wp1137769_LAX2FF6GKA/www/SStest/assets/.db"
copying silverstripe root .htaccess file into .db folder
chmod 777 assets/.db/.htaccess
chmod 777 assets/.db
install.php now free of error or warning
starting installation
-----------------------------
# Setting up 'mysite/_config.php'...
# Setting up /is/htdocs/wpxxxxxxx_LAX2FF6GKA/www/SStest/mysite/_config.php
# Setting up '.htaccess' file...
# Setting up /is/htdocs/wpxxxxxxx_LAX2FF6GKA/www/SStest/.htaccess
# Building database schema...
[User Error] Couldn't run query: PRAGMA integrity_check | unable to open a temporary database file for storing temporary tables
POST /SStest/install.php

Line 620 in /is/htdocs/wpxxxxxxx_LAX2FF6GKA/www/SStest/sapphire/core/model/Database.php
Trace

* Couldn't run query: PRAGMA integrity_check | unable to open a temporary database file for storing temporary tables
Line 620 of Database.php
* SS_Database->databaseError(Couldn't run query: PRAGMA integrity_check | unable to open a temporary database file for storing temporary tables,256)
Line 88 of SQLitePDODatabase.php
* SQLitePDODatabase->query(PRAGMA integrity_check)
Line 362 of SQLite3Database.php
* SQLite3Database->checkAndRepairTable()
Line 279 of SQLite3Database.php
* SQLite3Database->beginSchemaUpdate()
Line 185 of DatabaseAdmin.php
* DatabaseAdmin->doBuild(1)
Line 1028 of install.php
* Installer->install(Array)
Line 193 of install.php

==== phpinfo() output (extract, if you need details, let me know) =====

PHP Version 5.2.12

System 	Linux wp102 2.6.30.2-he-xeon-64gb+4 #1 SMP Sat Aug 15 15:25:21 CEST 2009 i686
Build Date 	Feb 9 2010 13:02:09
Server API 	Apache 2.0 Handler
Virtual Directory Support 	disabled
Configuration File (php.ini) Path 	/etc/php5
Loaded Configuration File 	/etc/php5/php.ini
Scan this dir for additional .ini files 	/etc/php5/conf.d
additional .ini files parsed 	/etc/php5/conf.d/extensions.ini, /etc/php5/conf.d/extensions_plus.ini, /etc/php5/conf.d/fopen.ini, /etc/php5/conf.d/ioncube.ini, /etc/php5/conf.d/limits.ini, /etc/php5/conf.d/mysql.ini, /etc/php5/conf.d/mysqli.ini, /etc/php5/conf.d/paths.ini, /etc/php5/conf.d/pdflib.ini, /etc/php5/conf.d/session.ini, /etc/php5/conf.d/suhosin.ini, /etc/php5/conf.d/uploads.ini, /etc/php5/conf.d/zend.ini
PHP API 	20041225
PHP Extension 	20060613
Zend Extension 	220060519
Debug Build 	no
Thread Safety 	disabled
Zend Memory Manager 	enabled
IPv6 Support 	enabled
Registered PHP Streams 	https, ftps, compress.zlib, compress.bzip2, php, file, data, http, ftp, zip
Registered Stream Socket Transports 	tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
Registered Stream Filters 	zlib.*, bzip2.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, convert.iconv.*

Suhosin logo This server is protected with the Suhosin Patch 0.9.7
Copyright (c) 2006 Hardened-PHP Project
allow_call_time_pass_reference	Off	Off
allow_url_fopen	On	On
allow_url_include	On	On
always_populate_raw_post_data	Off	Off
arg_separator.input	&	&
arg_separator.output	&amp;	&amp;
asp_tags	Off	Off
auto_append_file	no value	no value
auto_globals_jit	On	On
auto_prepend_file	no value	no value
browscap	no value	no value
default_charset	no value	no value
default_mimetype	text/html	text/html
define_syslog_variables	Off	Off
disable_classes	no value	no value
disable_functions	no value	no value
display_errors	On	On
display_startup_errors	Off	Off
doc_root	no value	no value
docref_ext	no value	no value
docref_root	no value	no value
enable_dl	Off	Off
error_append_string	no value	no value
error_log	no value	no value
error_prepend_string	no value	no value
error_reporting	6135	6135
expose_php	On	On
extension_dir	/usr/lib/apache2/modules/php5/	/usr/lib/apache2/modules/php5/
file_uploads	On	On
highlight.bg	#FFFFFF	#FFFFFF
highlight.comment	#FF9900	#FF9900
highlight.default	#0000BB	#0000BB
highlight.html	#000000	#000000
highlight.keyword	#007700	#007700
highlight.string	#DD0000	#DD0000
html_errors	On	On
ignore_repeated_errors	Off	Off
ignore_repeated_source	Off	Off
ignore_user_abort	Off	Off
implicit_flush	Off	Off
include_path	.:/usr/share/pear/php5	.:/usr/share/pear/php5
log_errors	Off	Off
log_errors_max_len	1024	1024
magic_quotes_gpc	Off	Off
magic_quotes_runtime	Off	Off
magic_quotes_sybase	Off	Off
mail.force_extra_parameters	no value	no value
max_execution_time	30	30
max_file_uploads	20	20
max_input_nesting_level	64	64
max_input_time	60	60
memory_limit	128M	128M
open_basedir	/is/htdocs/user_tmp/wp1137769_LAX2FF6GKA:/tmp:/dev/null:/dev/urandom:/bin:/usr:/is/default.errors:/is/htdocs/wp1137769_LAX2FF6GKA	no value
output_buffering	no value	no value
output_handler	no value	no value
post_max_size	8M	8M
precision	14	14
realpath_cache_size	1M	1M
realpath_cache_ttl	300	300
register_argc_argv	On	On
register_globals	Off	Off
register_long_arrays	Off	Off
report_memleaks	On	On
report_zend_debug	On	On
safe_mode	Off	Off
safe_mode_exec_dir	no value	no value
safe_mode_gid	Off	Off
safe_mode_include_dir	no value	no value
sendmail_from	no value	no value
sendmail_path	/usr/sbin/sendmail -t -i 	/usr/sbin/sendmail -t -i 
serialize_precision	100	100
short_open_tag	On	On
SMTP	localhost	localhost
smtp_port	25	25
sql.safe_mode	Off	Off
suhosin.log.phpscript.is_safe	Off	Off
track_errors	Off	Off
unserialize_callback_func	no value	no value
upload_max_filesize	8M	8M
upload_tmp_dir	/is/htdocs/user_tmp/wp1137769_LAX2FF6GKA	/tmp
user_dir	no value	no value
variables_order	EGPCS	EGPCS
xmlrpc_error_number	0	0
xmlrpc_errors	Off	Off
y2k_compliance	On	On
zend.ze1_compatibility_mode	Off	Off

Avatar
apiening

Community Member, 60 Posts

14 June 2010 at 10:31am

Moin Mathias,

some sqlite versions attempt to create a temporary file to store data. What version are you using? The sqlite section of your phpinfo() is missing.

On the command line type "sqlite3" to enter sqlite cli, then try "PRAGMA temp_store;". If it is not set to 2 add the following to your mysite/_config.php

<code>
SQLite3Database::$default_pragma['temp_store'] = "MEMORY";
</code>

I had to tweak the sqlite3/_config.php for this to work so you have to update your sqlite3 module. http://open.silverstripe.org/changeset/106420/modules/sqlite3/trunk/_config.php

BTW by convention module folders in Silverstripe should be exactly like the module name. For sqlite3 this is "sqlite3" and not "sqlite".

Good luck

Andy

Avatar
gaston

Community Member, 24 Posts

15 June 2010 at 6:28pm

Moin, moin, (aus dem Badischen)

I tried the changes but came to the same error, identical messages.
However, after uploading the two _config.php files, I called the site URL http://www.<domain>.de/SStest and got the full working CMS. The sqlite db is created and available and works (I can create pages and change content)
An attempt to rebuild the DB fails: calling http://www.<domain>.de/SStest/dev/build returns

Building Database SS_mysite

Creating database tables
# SQLitePDO Version 3.3.8
# Checking database integrity
Website Error
There has been an error

The website server has not been able to respond to your request.

phpinfo.php info on sqlite:
pdo_sqlite
PDO Driver for SQLite 3.x enabled
PECL Module version 1.0.1 $Id: pdo_sqlite.c 272374 2008-12-31 11:17:49Z sebastian $
SQLite Library 3.3.8

SQLite
SQLite support enabled
PECL Module version 2.0-dev $Id: sqlite.c 289587 2009-10-12 19:04:00Z felipe $
SQLite Library 2.8.17
SQLite Encoding UTF-8

Directive Local Value Master Value
sqlite.assoc_case 0 0

I assume, the error may lie within the SQLite Library version 2.8.17. If that is the case, I have the problem, that this is something I cannot change

Ciao, Mathias

Avatar
apiening

Community Member, 60 Posts

16 June 2010 at 1:22pm

Edited: 16/06/2010 1:25pm

Moin Mathias (sacht man im Badischen auch moin? ;-)

you got the discrete error msg. Can you try http://www.<domain>.de/SStest/dev/build?isDev=1 ? That should give you the chatty version.

The Silverstripe SQLite adapter uses SQLite version 3 only, namely the native PHP SQLite3 class and as a failsafe - like in your case - the PDO implementation in case SQLite3 is not available (commonly PHP versions prior to 5.3).

It looks like your SQLite just doesn't like the integrity check since everything else seems to work. You're almost there, so don't give up. Try the sledgehammer: open the sqlite3/code/SQLite3Database.php, search for the checkAndRepairTable function and add

return true;

as the first line of the function in order to pretend checks have been performed and everything is alright. This is for debugging only. If it fixes the issue I have to find a permanent solution.

Forgive my guessing. Although the SQLite adapter is behaving decently and is passing all UNITtests it is quite new and has not been used in production here at SilverStripe due to the size of projects. So I'm happy to trade my support for your feedback.

Cheers

Andy

Avatar
gaston

Community Member, 24 Posts

16 June 2010 at 8:36pm

Salut Andy,

I recognized that the web server package I use on host-europe is Webpack 2.0 and that 3.0 is avaiolable. So I upgraded to the new package (which is free of charge with host-europe and took 1 hour to complete). I then gave it a fresh try to run Silverstripe on host-europe using the latest sqlite trunk 106420. Now the error is slightly different:

[User Error] Couldn't run query: VACUUM | authorization denied
POST /SStest/install.php

Line 620 in /is/htdocs/wp1137769_LAX2FF6GKA/www/SStest/sapphire/core/model/Database.php
Source

611 	/**
612 	 * Error handler for database errors.
613 	 * All database errors will call this function to report the error.  It isn't a static function;
614 	 * it will be called on the object itself and as such can be overridden in a subclass.
615 	 * @todo hook this into a more well-structured error handling system.
616 	 * @param string $msg The error message.
617 	 * @param int $errorLevel The level of the error to throw.
618 	 */
619 	function databaseError($msg, $errorLevel = E_USER_ERROR) {
620 		user_error($msg, $errorLevel);
621 	}
622 	
623 	/**
624 	 * Enable supression of database messages.
625 	 */
626 	function quiet() {

Trace

    * Couldn't run query: VACUUM | authorization denied
      Line 620 of Database.php
    * SS_Database->databaseError(Couldn't run query: VACUUM | authorization denied,256)
      Line 88 of SQLitePDODatabase.php
    * SQLitePDODatabase->query(VACUUM)
      Line 364 of SQLite3Database.php
    * SQLite3Database->checkAndRepairTable()
      Line 279 of SQLite3Database.php
    * SQLite3Database->beginSchemaUpdate()
      Line 185 of DatabaseAdmin.php
    * DatabaseAdmin->doBuild(1)
      Line 1028 of install.php
    * Installer->install(Array)
      Line 193 of install.php

looking at /assets/.db/SS_mysite, the file has size 0, permission 644 and owner is nobody/nobody

I am very interested in getting this to work, so if you contact me directly, I can grant you access to the site so that you have a better view. We can then post the solution later on this threat

Ciao, Mathias

Avatar
apiening

Community Member, 60 Posts

17 June 2010 at 9:43am

Hi Mathias,

this last one is easy as. Your hoster doesn't allow for vacuuming. Just add:

SQLite3Database::$vacuum = false;

to your mysite/_config.php. That should be it.

Cheers

Andy

Go to Top