webentwicklung-frage-antwort-db.com.de

Fehler bei der Dateiberechtigung beim Ausführen von CakePHP in Ubuntu 10.4

Ich habe CakePHP 2.0 mit den folgenden Schritten installiert:

1. Start the terminal
2. Sudo mkdir /var/www/cakephp
3.Sudo cp -r ~/cakephp/* /var/www/cakephp

Ändern Sie die tmp-Ordnerzulassung 

4. Sudo chmod -R 777 cakephp/app/tmp

Aktivieren Sie Mod-Rewrite 

5. Sudo a2enmod rewrite

Öffnen Sie die Datei/etc/Apache2/sites-enabled/000-default und ändern Sie AllowOverride None in AllowOverride All

6. Sudo vim /etc/Apache2/sites-enabled/000-default

Starten Sie Apache neu 

7. Sudo /etc/init.d/Apache2 restart

Ich öffnete meinen Browser und tippte die Adresse http: // localhost/cakephp/ ein und diese Fehlermeldung wurde angezeigt:

Warnung: _cake_core_ cache konnte 'cake_dev_en-us' nicht in den Dateicache in /var/www.__ schreiben. /cakephp/lib/Cake/Cache/Cache.php in Zeile 310
Warnung: _cake_core_ cache konnte nicht Schreiben Sie "cake_dev_en-us" in den Dateicache in /var/www/cakephp/lib/Cake/Cache/Cache.php in Zeile 310
Warnung:/var/www/cakephp/app/tmp/cache/persistent/ist in /var/www/cakephp.__ nicht beschreibbar. /lib/Cake/Cache/Engine/FileEngine.php in Zeile 320
Warnung: /var/www/cakephp/app/tmp/cache/models/ist in /var/www/cakephp/lib/Cake/Cache/Engine/FileEngine.php in Zeile 320 nicht beschreibbar
Warnung:/var/www/cakephp/app/tmp/cache/ist in /var/www/cakephp/lib/Cake.__ nicht beschreibbar. /Cache/Engine/FileEngine.php in Zeile 320

18
Dinesh Chandra

Der Befehl Sudo chmod -R 777 cakephp/app/tmp hat nur tmp schreibbar gemacht, Sie sollten den Cache und seine Unterverzeichnisse auch beschreibbar machen. Andernfalls kann Cake die Cache-Dateien nicht in das Cache-Verzeichnis in tmp schreiben.

Also sollten diese Verzeichnisse beschreibbar sein:

cakephp/app/tmp/cache
cakephp/app/tmp/cache/persistent
cakephp/app/tmp/cache/models

Stellen Sie sicher, dass das Protokollverzeichnis auch beschreibbar ist: cakephp/app/tmp/logs.

45
mensch

Ich habe ein sehr ähnliches Problem mit cachePhp 3 festgestellt. 

Warning (512): /cache/persistent/ is not writable [CORE/src/Cache/Engine/FileEngine.php, line 439]

Warning (512): Cache engine Cake\Cache\Engine\FileEngine is not properly configured. [CORE/src/Cache/Cache.php, line 177]

Da ich neu in CakePhp bin, habe ich die Datei mit dem Problem - CORE/src/Cache/Engine/FileEngine.php debuggt. Hier ist Funktion wie folgt:

protected function _active()
{
    $dir = new SplFileInfo($this->_config['path']);
    $path = $dir->getPathname();

    $success = true;
    if (!is_dir($path)) {        
        //@codingStandardsIgnoreStart
        $success = @mkdir($path, 0775, true);
        //@codingStandardsIgnoreEnd
    }

    $isWritableDir = ($dir->isDir() && $dir->isWritable());

    if (!$success || ($this->_init && !$isWritableDir)) {
        $this->_init = false;
        trigger_error(sprintf(
            '%s is not writable',
            $this->_config['path']
        ), E_USER_WARNING);
    }

    return $success;
}

Es prüft, ob das Cache-Verzeichnis schreibbar ist, und ruft Daten über Pfadform $this->_config['path'] variable ab. Diese Variable wird standardmäßig aus der .env-Datei initialisiert (sofern Sie sie verwenden) und die folgenden Zeilen enthalten:

export CACHE_DEFAULT_URL="File://tmp/cache/?prefix=${APP_NAME}_default&duration=${CACHE_DURATION}"
export CACHE_CAKECORE_URL="File://tmp/cache/persistent?prefix=${APP_NAME}_cake_core&serialize=true&duration=${CACHE_DURATION}"
export CACHE_CAKEMODEL_URL="File://tmp/cache/models?prefix=${APP_NAME}_cake_model&serialize=true&duration=${CACHE_DURATION}"

Ich habe alle File: in Null: geändert, wie folgt:

export CACHE_DEFAULT_URL="Null://tmp/cache/?prefix=${APP_NAME}_default&duration=${CACHE_DURATION}"
export CACHE_CAKECORE_URL="Null://tmp/cache/persistent?prefix=${APP_NAME}_cake_core&serialize=true&duration=${CACHE_DURATION}"
export CACHE_CAKEMODEL_URL="Null://tmp/cache/models?prefix=${APP_NAME}_cake_model&serialize=true&duration=${CACHE_DURATION}"
export CACHE_DRV_DEFLT = "Null"
export CACHE_DRV_MODEL = "Null"
export CACHE_DRV_CORE = "Null"

Und es hilft, mein Problem wurde behoben. Wahrscheinlich wird es für jemanden hilfreich sein. Genießen!

1
Vaha

Ich habe ähnliche Probleme gehabt. Hier sind ein paar Dinge, die mir geholfen haben:

Wenn Sie nicht den "Vorschlaghammer" -Ansatz von chmod 777 verwenden möchten (möglicherweise möchten Sie dies bei der Produktion vermeiden ), enthalten die Installationsanweisungen von CakePHP stattdessen Informationen zur Verwendung von ACL:

Beachten Sie, dass Sie wahrscheinlich Sudo für die dort angegebenen setfacl-Befehle verwenden müssen.

Nach meiner Erfahrung (CakePHP 2) reichen diese Befehle jedoch nicht aus. Diese Befehle geben Ihrem webserver-Benutzer Zugriff auf den Cache usw., aber alles, was Sie von der Befehlszeile aus ausführen (wie den Befehl cake), wird wahrscheinlich als your - Benutzer und nicht als Webserver-Benutzer ausgeführt.

Daher sollten Sie die oben genannten setfacl-Befehle ein zweites Mal ausführen und ${HTTPDUSER} durch Ihren Benutzernamen ersetzen. Wenn Sie nicht sicher sind, wie Ihr Benutzername lautet, geben Sie whoami ein, um ihn zu finden.

1
Sam

Die Verwendung von chmod -R 777/var/www/cakephp/app/tmp/Wenn Sie also den Ordner execuatble machen, wird dieses Problem gelöst. Ich hatte sogar ähnliche Probleme beim Testen von cron, dh Shell, die in app/Console/Command vorhanden ist/Mappe. Wenn wir einen cron mehrmals ausführen, wird die Berechtigung tmp/folder überschrieben, und an dieser Stelle werden Berechtigungsfehler angezeigt. Dies kann durch rekursives Ausführen von tmp/folder vermieden werden.

1
Dhiraj

Wenn Sie die bereitgestellte .env-Datei verwenden möchten und die Berechtigungen das Problem nicht gelöst haben, ändern Sie die .env-Datei als temporären Fix, um den absoluten Pfad zu verwenden, der auf Ihr App-Verzeichnis verweist

export CACHE_FOLDER="/var/www/absolute_path_to_my_cakephp_app/"
export CACHE_DURATION="+2 minutes"
export CACHE_DEFAULT_URL="file://${CACHE_FOLDER}tmp/cache/?prefix=${APP_NAME}_default&duration=${CACHE_DURATION}"
export CACHE_CAKECORE_URL="file://${CACHE_FOLDER}tmp/cache/persistent?prefix=${APP_NAME}_cake_core&serialize=true&duration=${CACHE_DURATION}"
export CACHE_CAKEMODEL_URL="file://${CACHE_FOLDER}tmp/cache/models?prefix=${APP_NAME}_cake_model&serialize=true&duration=${CACHE_DURATION}"
0
Ionut Irofte

"chmod -R 777 tmp/cache ”Wenn der Ordner tmp nicht vorhanden ist, erstellen Sie eine tmp-Datei mit mkdir tmp und mkdir tmp/cache

chmod -R 777 logs

chmod -R 777 tmp/sessions

chmod -R 777 tmp/tests

chcon -R -t httpd_sys_content_rw_t 'tmp'

chcon -R -t httpd_sys_content_rw_t 'logs'
0
pdchaudhary