Im shared hosting habe ich auf diese zentralen Verzeichnisse auf dem Server keinen Zugriff.
Für PHP via FastCGI haben wir die M-öglichkeit, eine eigene php.ini in das fastcgi-bin zu legen, die dann von PHP mit ausgewertet wird. Aber das ist ja nur der Zugriff auf PHP-Skripte über den Webserver.
Für PHP-CLI habe ich bisher noch keinen Hinweis bekommen, wo ich in meinem Paket eine eigene php-cli.ini ablegen könnte, sodass sie auch Berücksichtigung finden würde.
php -i
sollte dir auch Info über den Pfad der ini Datei ausgeben.
Ruf doch innerhalb vom Bootstrap.php mal die Pfad Info ab. Dann siehst du, auf welche ini Datei er zugreift.
Was den Cache selbst angeht, so hatte ich schon das Problem, das sich der Cache wie verklemmt. Ich hab dann jeweils einfach die Cache Files im Web Directory von Hand gelöscht. Aber pass auf, das du die Ordnerstruktur beibehältst.
In der Kommandozeile geprüft:
user@machine:~$ which php
/usr/bin/php
und
user@machine:~$ php -i | grep ini
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
Scan this dir for additional .ini files => /etc/php5/cli/conf.d
Da du bei Flow ein anderes Verhalten feststellst als in der Konsole, wäre es gut die Information wie von mir beschrieben innerhalb von Bootstrap abzurufen. Nur so findest du heraus, was und woher Flow seine Konfiguration bekommt.
Wo PHP(-CLI) die ini-Dateien erwartet ist ja hier beschrieben:
http://www.php.net/manual/de/configuration.file.php
Der Zusammenhang ist aber stark von den Installationsparametern auf dem Server abhängig- und sich dort in den verschiedenen Abhängigkeiten als Außenstehender zurecht zu finden ist schwierig.
Übrigens gibt es im 1.0er Neos noch dieses grundsätzliche Problem bzgl. der Prüfung auf date.timezone:
http://forge.typo3.org/issues/54593
tobla schriebDa du bei Flow ein anderes Verhalten feststellst als in der Konsole, wäre es gut die Information wie von mir beschrieben innerhalb von Bootstrap abzurufen. Nur so findest du heraus, was und woher Flow seine Konfiguration bekommt.
Ja, das ist ein guter Gedanke.
Direkt abgegriffen per echo phpinfo(); innerhalb der Bootstrap.php:
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
Scan this dir for additional .ini files => /etc/php5/cli/conf.d
Da sehe ich keinen Unterschied zwischen innerhalb und außerhalb.
Kommentiere diese date.timezone Abfrage doch temporär aus, bis das Team es gefixt hat.
Ich verstehe ehrlich gesagt auch nicht ganz, warum die Entwickler einen Exit werfen wollen, wenn diese Konfiguration nicht vorhanden ist und nicht auf einen sinnvollen Default Value zurückgreifen.
Verstehe ich das richtig: Obwohl du beim Aufruf von Flow dein eigenes ini als Parameter mitgibst, nimmt er das Standardfile? Wenn dem wirklich so ist, übersteuert Flow wohl den Parameter. In dem Fall kann uns wohl nur kitsunet weiterhelfen.
tobla schriebKommentiere diese date.timezone Abfrage doch temporär aus, bis das Team es gefixt hat.
Bei den magic_quotes_gpc würde das Problem ebenfalls bestehen und ich weiß ja nicht, ob die benötigten Einstellungen tatsächlich bei den beteiligten Skripten landen. Auskommentieren ist daher nicht wirklich die Lösung.
tobla schriebVerstehe ich das richtig: Obwohl du beim Aufruf von Flow dein eigenes ini als Parameter mitgibst, nimmt er das Standardfile? Wenn dem wirklich so ist, übersteuert Flow wohl den Parameter. In dem Fall kann uns wohl nur kitsunet weiterhelfen.
Ja, so sieht es aus.
Wenn ich allerdings date.timezone und magic_quotes_gpc per -d mitgebe, dann läuft der flush Befehl durch (wenn auch mit dem oben geposteten Fehler).
Also Flow macht quasi einen weiteren Aufruf von sich selbst mit dem compile command, dabei wird die von php gemeldetete php.ini benutzt um den neuen Aufruf zu machen. Das genaue Command welches ausgeführt wird, wird in Packages/Framework/TYPO3.Flow/Classes/Core/Booting/Scripts.php::buildSubprocessCommmand() nachsehen. Da sieht man auch, dass man das ini File in den Settings explizit setzen kann (über TYPO3.Flow.core.subRequestPhpIniPathAndFilename).
Damit sollte es gehen 🙂
Viele Grüße und frohes Neues!
Das genaue Command welches ausgeführt wird, wird in Packages/Framework/TYPO3.Flow/Classes/Core/Booting/Scripts.php::buildSubprocessCommmand() nachsehen.
Bei mir in der Installation (Neos 1.0.1) finde ich den von Dir angegebenen Pfad nicht wieder.
Stattdessen habe ich bei mir:
/TYPO3-Neos/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Core/Booting/Scripts.php
Ist das der Pfad den Du meinst?
Da sieht man auch, dass man das ini File in den Settings explizit setzen kann (über TYPO3.Flow.core.subRequestPhpIniPathAndFilename).
Sind damit diese Angaben in den /TYPO3-Neos/Configuration/Settings.yaml gemeint?
TYPO3:
Flow:
core:
# Path and filename of the PHP binary
# The constant PHP_BINDIR usually contains the path, but on Windows this doesn't work reliably
phpBinaryPathAndFilename: '/usr/bin/php'
# Set which php.ini file should be used for the CLI sub requests.
# If not set (that is value equals NULL) the php.ini file of the executing process (usually the web server's) is used.
# If set to a path and filename, the specified php.ini file is loaded.
# If set to boolean FALSE, Flow does not try to specify any php.ini file to the sub process.
subRequestPhpIniPathAndFilename: '/path/to/TYPO3-Neos/php-cli.ini'
Ich habe diese Angabe, aber Neos scheint sie nicht zu verwenden (oder sie werden von irgendwas wieder überschrieben).
Der Inhalt der in der Settings.yaml angegebenen php-cli.ini sieht übrigens so aus:
date.timezone = "Europe/Berlin"
memory_limit = 256M ; default ist 128M
xdebug.max_nesting_level = 500 ; Einkommentieren sofern xdebug verwendet wird
detect_unicode = Off
magic_quotes_gpc = Off
radioking schriebNoch ein Nachtrag:
Wenn man die Shebang-Zeile des Skriptes flow im TYPO3-Neos Verzeichnis abändert in
#!/usr/bin/php -d magic_quotes_gpc=0 -d date.timezone="Europe/Berlin"
gelingt wohl der Cache flush - aber es kommt auch eine Fehlermeldung von PHP:
user@machine:~/path/to/TYPO3-Neos$./flow flow:cache:flush --force
PHP: syntax error, unexpected '=' in Unknown on line 7
Force-flushed caches for "Development" context.
Korrekur:
Das klappt so nicht!
Bei Debian darf die Shebang Zeile nur 127 Zeichen (byte) lang sein und maximal 1 Leerzeichen enthalten. Es hängt dann vom Binary ab, ob es das darüber hinaus "am Stück" und ohne weitere Leerzeichen Übergebene versteht. PHP kann es offensichtlich nicht. Die Lösung besteht darin, die nötigen PHP-Direktiven in einer eigenen php-cli.ini abzulegen und diese durch Anhängen des Parameters -c an die Shebang-Zeile dem PHP-CLI-binary mitzugeben.
Die besondere Feinheit ist dabei allerdings, zwischen -c und dem Pfad kein Leerzeichen zu lassen und den Pfad auch nicht in Anführungszeichen einzuschließen, sondern direkt mit /pfad/zur/php-cli.ini anzuschließen!
Daher muss die Shebang Zeile in /TYPO3-Neos/flow so (und nur so) lauten:
#!/usr/bin/php -c/pfad/zur/php-cli.ini
Hallo Community,
gibt es hier eigentlich immer noch keine richtige Lösung?
Bei mir ging es leider noch nie. Auch mit Neos 1.1 komme ich immer noch nicht bis zum Setup. =(
Ich habe zum Testen ein Ubuntu-Server "PHP Version 5.3.10-1ubuntu3.8". In beiden php.ini's ist die Option "date.timezone = Europe/Berlin" gesetzt.
Es ist wirklich merkwürdig... Ich habe zum Debuggen die folgende Datei angepasst...
TYPO3-Neos-1.1/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Core/Bootstrap.php
...
var_dump(ini_get('date.timezone'));
if (ini_get('date.timezone') === '') {
var_dump('hit');
echo('Flow requires the PHP setting "date.timezone" to be set. (Error #1342087777)');
exit(1);
}
...
Als Rückgabe kommt dann schlicht...
string(13) "Europe/Berlin"
Uncaught Exception in Flow
#1355480641: string(0) ""
string(3) "hit"
Flow requires the PHP setting "date.timezone" to be set. (Error #1342087777)
(oder siehe Screenshot)
Bild: s7.directupload.net/…/i638ddq4.png
Ein paar andere Code-Zeilen:
var_dump(ini_get('date.timezone')); # > string(13) "Europe/Berlin"
var_dump(ini_get('date.timezone') === ''); # > bool(false)
# Also eigentlich alles gut.
Es ist echt wie verhext. Ist das ein Bug in PHP?
Konnte eigentlich überhaupt jemand das Problem lösen? 😢

So wie es aussieht, konnte ich das Problem temporär durch folgenden Befehl im CLI beheben:
./flow flow:core:compile
Gefunden in der zur Exception gehörenden Seite:
http://wiki.typo3.org/Exception/Flow/1355480641#solution_4
So kam ich zumindestens in Setup. Allerdings erschien gleich erneut der Fehler beim Klick auf "Next" beim Datenbank-Setup.
Ich habe in der Datei TYPO3-Neos-1.1/Configuration/Settings.yaml noch folgendes gesetzt:
TYPO3:
Flow:
core:
subRequestPhpIniPathAndFilename: '/etc/php5/cli/php.ini'
Und danach noch "sudo ./flow core:setfilepermissions ... ... ..." ausgeführt.
Und tada... es geht. *puh*
... Bin jetzt schon ein wenig erleichtert. 😃
PS: Ich würde ja eher diese Installtionsbeschreibung empfehlen:
http://docs.typo3.org/neos/TYPO3NeosDocumentation/GettingStarted/Installation.html
Die von neo.typo3.org schien dann ja nicht zu reichen. ^^
Der letzte Post hier ist eigentlich das entscheidende. Im Browser mag das alles richtig aussehen, aber auch in der command line php.ini muss die Einstellung passen.
Hierzu hätte ich noch eine Frage.
Bei jeder neuen Neos-Installation auf den genannten Ubuntu-Server muss ich jetzt in der Settings.yaml die Option "subRequestPhpIniPathAndFilename" (wie in dem vorherigen Post beschrieben) setzen.
Hast du eine Idee warum es bei mir nicht ohne geht?
Vor allen weil es ja der Standard-Pfad zur php.ini von CLI ist. Ich habe es zuhause noch bei einen anderen Debian-Testserver ausprobiert und dort ging es auch ohne diese Einstellung. Schon irgendwie merkwürdig...