Nette na wedos – Nette\DI\ServiceCreationException
- Draffix
- Člen | 146
Zdravím, řeším teď nette na wedosu a nevím si rady jak pokračovat. Vše mi na localhostu funguje, když jsem to ale hodil na webhosting wedos, vyhodilo mi to chybu:
Nette\DI\ServiceCreationException
Service 'basket': No service of type Nette\Database\Connection found.
Make sure the type hint in Method Table::__construct() is written correctly
and service of this type is registered.
Můj config je tento:
common:
parameters:
php:
date.timezone: Europe/Prague
# zlib.output_compression: yes
nette:
application:
errorPresenter: Error
session:
autoStart: smart
expiration: "+ 30 minutes"
debugger:
strictMode: true
bar:
- @sessionPanel
services:
database: @Nette\Database\Connection
authenticator: Authenticator
category: CategoryModel
order: OrderModel
product: ProductModel
users: UserModel
basket: BasketModel
comments: CommentModel
deliveryPayment: DeliveryPaymentModel
setting: SettingModel
emailTemplate: EmailTemplateModel
sessionPanel:
class: SessionPanel
arguments:
- @application
- @session
factories:
production < common:
nette:
database:
driver: mysql
socket: /tmp/mysql50.sock
host: wm28.wedos.net
database: d38550_matylan
username: user
password: pass
profiler: TRUE
charset: utf8
development < common:
nette:
database:
default:
dsn: 'mysql:host=127.0.0.1;dbname=matyIsland'
user: root
password: pass
Netuším kde hledat chybu, když na localu to funguje a na wedosu už ne. Víte někdo co s tím nebo jak postupovat?
- Draffix
- Člen | 146
@CherryBoss To už jsem zkoušel snad stokrát a pořád nic
@Viper Já BasketModel dědím z TableModel:
class BasketModel extends Table {
/** @var string */
protected $tableName = 'basket';
Zbytek už jsou metody s sql dotazy
TableModel mám takto:
abstract class Table extends Nette\Object {
/** @var Nette\Database\Connection */
protected $connection;
/** @var string */
protected $tableName;
/** @var Nette\Http\SessionSection */
public $mySession;
/**
* @param Nette\Database\Connection $db
* @throws \Nette\InvalidStateException
*/
public function __construct(Nette\Database\Connection $db, Nette\Http\Session $session) {
$this->connection = $db;
$this->mySession = $session;
if ($this->tableName === NULL) {
$class = get_class($this);
throw new Nette\InvalidStateException("Název tabulky musí být definován v $class::\$tableName.");
}
}
A zbytek zase metody s sql dotazy. Spíše mi není jasné, proč to hlásí jenom u toho BasketModel, když všechny jiné modely jsou vesměs stejné.
- Draffix
- Člen | 146
Ještě jsem si všiml, že když zkusím do configu ve vývojovém prostředí vložit připojení k wedosu (namísto localhostu), tak mi to vypisuje stejnou chybu:
development < common:
nette:
database:
driver: mysql
socket: /tmp/mysql50.sock
host: wm28.wedos.net
database: d38550_matylan
username: user
password: pass
profiler: TRUE
charset: utf8
- Draffix
- Člen | 146
Super, chyba byla v tom, už to jede, děkuji. Nicméně mi teď nejedou žádné odkazy a nechci kvůli tomu zakládat nové vlákno, mohl by mi někdo tedy poradit jak to zprovoznit?
htaccess globální
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ /www/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/www/
RewriteRule ^(.*)$ /www/$1
</IfModule>
htaccess ve www složce
# Apache configuration file (see httpd.apache.org/docs/2.2/mod/quickreference.html)
# disable directory listing
Options -Indexes
# enable cool URL
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# prevents files starting with dot to be viewed by browser
RewriteRule /\.|^\. - [F]
# front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>
# enable gzip compression
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript application/json
</IfModule>
# allow combined JavaScript & CSS. Inside of script.combined.js you could use <!--#include file="script.js" -->
<IfModule mod_include.c>
<FilesMatch "\.combined\.(js|css)$">
Options +Includes
SetOutputFilter INCLUDES
</FilesMatch>
</IfModule>
Když kliknu na nějaký odkaz, wedos mi hlásí toto:
Internal Server Error
Pri zpracovani pozadavku doslo k vnitrni chybe. Pravdepodobne se jedna o chybu v .htaccess souboru.
Ctete instrukce v nasi znalostni bazi: Chyba 500 - Internal Server Error
- Michal Vyšinský
- Člen | 608
Wedos má myslím problémy s:
Options -Indexes
Jinak se omlouvám za předchozí blbou radu a pokud je tato také špatná, tak i za ni :)
- Draffix
- Člen | 146
Tak jsem zkoušel všechny kombinace a vyšlo mi z toho tohle:
Když mám toto:
htaccess globální
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ /www/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/www/
RewriteRule ^(.*)$ /www/$1
SetEnv NETTE_HTACCESS ok
</IfModule>
Bootstrap:
if (isset($_SERVER['NETTE_HTACCESS'])) { // FastCGI
// Admin base router
$container->router[] = new Route('admin[/<presenter>[/<action>[/<id>]]]?strana=<paginator-page> ', array(
'module' => "admin",
'presenter' => array(
Route::VALUE => 'Homepage',
Route::FILTER_TABLE => array(
),
),
'action' => array(
Route::VALUE => 'default',
Route::FILTER_TABLE => array(
// řetězec v URL => akce
),
),
'id' => NULL,
));
} else {
$container->router[] = new SimpleRouter('Homepage:default');
}
Tak mi jedou cURL ale nejedou mi odkazy – chyba 500.
Když pak v globálním htaccessu smažu toto:
SetEnv NETTE_HTACCESS ok
a v bootstrapu podmínku pro
$_SERVER['NETTE_HTACCESS']
, tak mi zase jedou odkazy ale nejde
cURL. Jak to vyřešit? Už mi jde z toho hlava kolem
Editoval Draffix (18. 2. 2013 15:24)
- Draffix
- Člen | 146
htaccess ve www složce mám takto:
# Apache configuration file (see httpd.apache.org/docs/2.2/mod/quickreference.html)
# disable directory listing
#Options -Indexes
# enable cool URL
<IfModule mod_rewrite.c>
RewriteEngine On
# RewriteBase /
# front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>
# enable gzip compression
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript application/json
</IfModule>
# allow combined JavaScript & CSS. Inside of script.combined.js you could use <!--#include file="script.js" -->
<IfModule mod_include.c>
<FilesMatch "\.combined\.(js|css)$">
#Options +Includes
#SetOutputFilter INCLUDES
</FilesMatch>
</IfModule>
A stále to nejde, opravdu nikdo neví?