Bug #55244

Can't use Flow with PHP > 5.4

Added by Samuel Mehrbrodt over 1 year ago. Updated over 1 year ago.

Status:Closed Start date:2014-01-22
Priority:Won't have this time Due date:
Assigned To:Samuel Mehrbrodt % Done:

0%

Category:-
Target version:-
Affected Flow version:(any)

Description

I have PHP 5.5.3 here and can't run Flow, get the following message:

Fatal error: Directive 'allow_call_time_pass_reference' is no longer available in PHP in Unknown on line 0
TYPO3\Flow\Core\Booting\Exception\SubProcessException thrown in file Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Core/Booting/Scripts.php in line 531.

The directive 'allow_call_time_pass_reference' was deprecated since PHP 5.0 and removed in 5.4: http://www.php.net/manual/de/ini.core.php#ini.allow-call-time-pass-reference

I'm running FLOW 2.1 (included in NEOS).

History

#1 Updated by Adrian Föder over 1 year ago

  • Status changed from New to Needs Feedback
  • Assigned To set to Samuel Mehrbrodt
  • Priority changed from Should have to Won't have this time

Samuel, this seems to not be a Flow issue; I would guess your CLI's INI is a different version and contains this unallowed directive.

Could you check, on your console, what php -v says?

#2 Updated by Samuel Mehrbrodt over 1 year ago

$ php -v
PHP 5.5.3-1ubuntu2.1 (cli) (built: Dec 12 2013 04:24:35)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies

#3 Updated by Adrian Föder over 1 year ago

thanks; could you then please update/set your Configuration/Settings.yaml file to a phpBinaryPathAndFilename value pointing to your PHP (5) binary? I still fear Flow picks up an old binary.

In this regard: do you maybe have another PHP (4, maybe) installed somewhere on the same system?

Thanks,
Adrian

#4 Updated by Samuel Mehrbrodt over 1 year ago

I don't have an older PHP version, but I now manually entered '/usr/bin/php5' in the phpBinaryPathAndFilename and renamed the Settings.yaml.example to Settings.yaml.

I think it's using the PHP 5.5. version. I edited the main index.php file to include phpinfo() at the very beginning and the version it showed was also 5.5.3.

However, the problem persists.

#5 Updated by Adrian Föder over 1 year ago

I edited the main index.php

...which is? The Web/index.php? That's not the issue here, because the problem occurs in a so called sub request, i.e. a PHP request Flow runs on its own.

It would be great if you could debug, for example, \TYPO3\Flow\Core\Booting\Scripts::executeCommand(), by echo'ing the $command for example in order to find out more...

#6 Updated by Samuel Mehrbrodt over 1 year ago

$command: "FLOW_ROOTPATH='/var/www/neos/' FLOW_CONTEXT='Development' XDEBUG_CONFIG='idekey=FLOW_SUBREQUEST remote_port=9001' "/usr/bin/php" -c '/etc/php5/apache2/php.ini' '/var/www/neos/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Core/../../../../Scripts/flow.php' 'typo3.flow:core:compile'"

$result: int(1)

$output: array(2) {
[0]=>
string(0) ""
[1]=>
string(106) "Fatal error: Directive 'allow_call_time_pass_reference' is no longer available in PHP in Unknown on line 0"
}

$settings: http://pastie.org/8656920

$ /usr/bin/php -v
PHP 5.5.3-1ubuntu2.1 (cli) (built: Dec 12 2013 04:24:35)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies

#7 Updated by Samuel Mehrbrodt over 1 year ago

Oh my dear... see my last line in my php.ini:
allow_call_time_pass_reference = On

Sorry for the hassle, my fault. Now it works...

#8 Updated by Adrian Föder over 1 year ago

  • Status changed from Needs Feedback to Closed

hah, and to me it's a typical problem of "went the wrong way": since that diverging PHP version for the subprocess is more common I didn't even tend to ask if your ini itself maybe contained the incorrect setting :)

Also available in: Atom PDF