Using debian jessie with PHP 7.0.4-1~dotdeb+8.1 (cli) ( NTS ).
This error is regarding this removed function in php7..any ideas on how to fix this?
This issue can be reproduced by running an bin/config check
Using debian jessie with PHP 7.0.4-1~dotdeb+8.1 (cli) ( NTS ).
This error is regarding this removed function in php7..any ideas on how to fix this?
This issue can be reproduced by running an bin/config check
Status | Assigned | Task | ||
---|---|---|---|---|
Duplicate | None | T10987 /config/issue/ causes coredump in PHP-FPM | ||
Resolved | epriestley | T9640 Make Phabricator compatible with PHP7 | ||
Duplicate | None | T10586 Call to undefined function mysql_real_escape_string() |
Can you show me the output of this command on your system?
$ php -r 'print_r(get_loaded_extensions());'
See Also: T9640
From http://php.net/manual/en/function.mysql-real-escape-string.php: This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used
This probably isn't directly related to PHP7.
If possible, we try to use mysqli (this install, and most other installs, should use mysqli) . If it's not available, we fall back and try mysql.
In the web UI, we test for these extensions and warn if they aren't present. However, we don't run the same checks from the CLI (T2383). The extensions available on the CLI can differ from the extensions available in the web UI, so even if the web UI runs properly the CLI may not.
This is likely because PHP has neither mysql nor mysqli installed, which is unusual. The output of get_loaded_extensions() should confirm if that's the issue.
If so, the remedy is to install either mysql or mysqli (presumably mysqli). The root issue is T2383, but it arises rarely because in most cases one of these extensions is present, or is installed according to the install instructions, or the issue is caught in the web UI and fixed on the CLI as a side effect.
The issue is not comming from missing php-extentions. mysqli was installed and present in fpm and cli so that was not the issue.
The actual function is missing, as @eadler said in the previous comment.
For the moment I've downgraded to PHP 5.6.17-0+deb8u1 (cli) (built: Jan 13 2016 09:10:12)
php -r 'print_r(get_loaded_extensions());'
Array
(
[0] => Core [1] => date [2] => ereg [3] => libxml [4] => openssl [5] => pcre [6] => zlib [7] => bcmath [8] => bz2 [9] => calendar [10] => ctype [11] => dba [12] => dom [13] => hash [14] => fileinfo [15] => filter [16] => ftp [17] => gettext [18] => SPL [19] => iconv [20] => mbstring [21] => pcntl [22] => session [23] => posix [24] => Reflection [25] => standard [26] => shmop [27] => SimpleXML [28] => soap [29] => sockets [30] => Phar [31] => exif [32] => sysvmsg [33] => sysvsem [34] => sysvshm [35] => tokenizer [36] => wddx [37] => xml [38] => xmlreader [39] => xmlwriter [40] => zip [41] => PDO [42] => apcu [43] => curl [44] => gd [45] => json [46] => mcrypt [47] => mysql [48] => mysqli [49] => pdo_mysql [50] => readline [51] => tidy [52] => mhash [53] => apc [54] => Zend OPcache
)
@epriestley that is from PHP 5.6.17
I've downgraded so I cannot run the command now on the server unfortunately.
But I think you are actually correct regarding the missing extensions. I've installed the php7-cli package but the extensions from php5-* .
Now the question is ...would php7 be ok for phabricator ?
T9640 is tracking PHP7 compatibility. We haven't extensively tested Phabricator on PHP7 yet, but I believe several users are running it without any issues. We're happy to fix issues you encounter with PHP7 if you report them.
I'm going to merge this into T2383, since I believe that's the root issue, you've worked around this locally, and you can no longer easily reproduce or confirm a fix since you don't have the original environment anymore.
OK, I'm going to switch to php7 and see if it goes.
If i'm getting into bugs/errors I will report them.
Thank you for the fast reply!
OK, after installing all the necessary extensions and changing the php.ini as recommended by phabricator everything works nice.
The only tricky part is that you have to install php7.0-apcu-bc. If you just install php7.0-apcu phabricator is going to show only a white page and an error is going to be thrown into the nginx error.log
2016/03/15 13:05:00 [error] 24020#0: *1 FastCGI sent in stderr: "PHP message: [2016-03-15 12:05:00] EXCEPTION: (Error) Call to undefined function apc_sma_info() at [<phabricator>/src/applications/cache/spec/PhabricatorDataCacheSpec.php:82] PHP message: arcanist(head=stable, ref.master=ccbaee585e1a, ref.stable=bb276740e7a8), phabricator(head=stable, ref.master=d76175285e96, ref.stable=fd72a2ff8101), phutil(head=stable, ref.master=d20d6e725037, ref.stable=89c7c2072813) PHP message: #0 PhabricatorDataCacheSpec::initAPCCommonSpec() called at [<phabricator>/src/applications/cache/spec/PhabricatorDataCacheSpec.php:56] PHP message: #1 PhabricatorDataCacheSpec::initAPCuSpec() called at [<phabricator>/src/applications/cache/spec/PhabricatorDataCacheSpec.php:23] PHP message: #2 PhabricatorDataCacheSpec::getActiveCacheSpec() called at [<phabricator>/src/applications/config/check/PhabricatorCacheSetupCheck.php:11] PHP message: #3 PhabricatorCacheSetupCheck::executeChecks() called at [<phabricator>/src/applications/config/check/PhabricatorSetupCheck.php:45] PHP message: #4 PhabricatorSetupCheck::runSetupChecks() called at [<phabricator>/src/applications/config/check/PhabricatorSetupCheck.php:126] PHP message: #5 PhabricatorSetupCheck::runAllChecks() called at [<phabricator>/src/applications/config/check/PhabricatorSetupCheck.php:91] PHP message: #6 PhabricatorSetupCheck::willProcessRequest() called at [<phabricator>/src/aphront/configuration/AphrontApplicationConfiguration.php:103] PHP message: #7 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phabricator>/webroot/index.php:17]" while reading response header from upstream
Hi @storrgie ,
The only thing was installing the php7.0-apcu-bc.
These are all the packages related to php7 on my server.
root@m:~# dpkg -l|grep php7 ii php7.0-apcu 5.1.4-1~dotdeb+8.1 amd64 APC User Cache for PHP ii php7.0-apcu-bc 1.0.3-1~dotdeb+8.1 amd64 APCu Backwards Compatibility Module ii php7.0-cgi 7.0.7-1~dotdeb+8.1 amd64 server-side, HTML-embedded scripting language (CGI binary) ii php7.0-cli 7.0.7-1~dotdeb+8.1 amd64 command-line interpreter for the PHP scripting language ii php7.0-common 7.0.7-1~dotdeb+8.1 all Common files for packages built from the PHP source ii php7.0-curl 7.0.7-1~dotdeb+8.1 amd64 CURL module for PHP ii php7.0-dev 7.0.7-1~dotdeb+8.1 amd64 Files for PHP7.0 module development ii php7.0-fpm 7.0.7-1~dotdeb+8.1 amd64 server-side, HTML-embedded scripting language (FPM-CGI binary) ii php7.0-gd 7.0.7-1~dotdeb+8.1 amd64 GD module for PHP ii php7.0-json 7.0.7-1~dotdeb+8.1 amd64 JSON module for PHP ii php7.0-mcrypt 7.0.7-1~dotdeb+8.1 amd64 libmcrypt module for PHP ii php7.0-mysql 7.0.7-1~dotdeb+8.1 amd64 MySQL module for PHP ii php7.0-opcache 7.0.7-1~dotdeb+8.1 amd64 Zend OpCache module for PHP ii php7.0-readline 7.0.7-1~dotdeb+8.1 amd64 readline module for PHP ii php7.0-tidy 7.0.7-1~dotdeb+8.1 amd64 tidy module for PHP