Closed VictorJavaSpring closed 11 months ago
Veig que es a causa del PHP 7.4, canvieu la linia 1093 del aixada/php/external/FirePHPCore/lib/FirePHPCore/ FirePHP.class.php
on diu if ($name{0} == "\0") {
per
if ($name[0] == "\0") {
@jmueller17: Se debería actualizar el FirePHP o eliminar su uso, yo casi me decantaria por lo segundo, ¿que opinas?
Perdoneu la meva ignorància.. hem pregunto si algú pujarà la correcció/ns, perqué tenim l'aplicació parada per fer comandes.. que ens recomaneu? Gracies
Sí, lo eliminamos mejor. A ver si tengo un momento hoy...
@victorcillo
1093
de aixada/php/external/FirePHPCore/lib/FirePHPCore/ FirePHP.class.php
?@jmueller17
Sí, lo eliminamos mejor. A ver si tengo un momento hoy...
Lo puedo hacer yo, y propongo PR
Ok, genial!
@victorcillo
Perdoneu la meva ignorància.. hem pregunto si algú pujarà la correcció/ns, perqué tenim l'aplicació parada per fer comandes.. que ens recomaneu? Gracies
Els canvis ja estan a master
. Si us plau notifiqueu com us va quan ho proveu, gràcies
Deixa fer Log in, pero la part de demanar comandes falla, per pantalla surt així:
Deixa fer Log in, pero la part de demanar comandes falla, per pantalla surt així...
Fa pinta de que hi ha més problemes amb la versió PHP 7.4, mireu d'usar una versió inferior de PHP.
Faré una prova del cicle de comandes i diners amb la 7.4.26, i ja posats amb la 8.1.1. Requerirà cert temps per poder dir alguna cosa...
Mira #290, arregla un error greu meu que feia que res funciones!!
Però amb amb el PHP 8.1 usant aquest PR Aixada només va a mitges (encara no he fet proves del PHP 7.4)
Ara amb PHP 8.1 encara no funciona Importar/exportat i se suposa que tampoc els emails
He probat amb #290 pero segueix sense mostrar les productes per demanar comanda, encara no hem canviat versió del PHP..
He probat amb #290 pero segueix sense mostrar les productes per demanar comanda, encara no hem canviat versió del PHP..
Ho havia provat amb PHP 8.1.1, i ara amb PHP 7.4.27
El #290 em funciona!!!
(ara #290 està també a master
)
També em funciona amb PHP 5.5.22
Ara que m'hi fixo aquesta pantalla indica que no has usat install.php
( és la típica pantalla d'Aixada sense *.js
i *.css
, si tens un servidor windows el procés install.php
també arregla uns links que linux enten bé però windows no )
Deixa fer Log in, pero la part de demanar comandes falla, per pantalla surt així:
@victorcillo A pesar del #290 si vols fer imports, fer exports o envia missatges no treballis amb PHP 7.4 o superior!
Acabo de canviar la versió PHP a 7.4 en el servidor on tenim allotjada la aplicació i sembla que torna a funcionar..
Encara que sembla que la versió PHP 7.4 acaba el 22 de noviembre de 2022.
Tot i aixó, he vist uns errors accedint a la secció diners a l'archiu "accounts_operations.php":
Els errors son a les arrays de la funció aquesta:
protected function get_account_types_filter($account_types) {
$response = array(
'show_uf' => false,
'show_uf_generic' => false,
'show_providers' => false,
'account_types' => null
);
$_key = array_search(1000, $account_types, true);
if ($_key !== false) {
array_splice($account_types, $_key, 1);
$response['show_uf'] = true;
}
$_key = array_search(1999, $account_types, true);
if ($_key !== false) {
array_splice($account_types, $_key, 1);
$response['show_uf_generic'] = true;
}
$_key = array_search(2000, $account_types, true);
if ($_key !== false) {
array_splice($account_types, $_key, 1);
if ($this->cfg_use_providers) {
$response['show_providers'] = true;
}
}
if (count($account_types)) {
$response['account_types'] = implode(',', $account_types);
}
return $response;
}
Salud!
@victorcillo Usa com a mínim el PHP 5.3!!!!
A la wiki ja ho indica:
PHP 5.3.2 or newer and PHP-7 (tested up to v7.3)
Estic treballant per que funcioni fins a la actual versió de PHP 8.2.1
Perdona, m'he equivocat al ficar el numeret de la versió!
He actualitzat a 7.4 ( no a 4.7)
https://stackoverflow.com/questions/32559674/in-array-expects-parameter-2-to-be-array-string-given-in Pot ser fent 1 casting a la array? // Cast to an array $array = (array) $account_types;
Si, fent el casting 'arregla aquest error: $account_types = (array) $account_types;
protected function get_account_types_filter($account_types) {
$response = array(
'show_uf' => false,
'show_uf_generic' => false,
'show_providers' => false,
'account_types' => null
);
$account_types = (array) $account_types; <-------
$_key = array_search(1000, $account_types, true);
... Faig una alftra issue amb aixó?
@victorcillo A pesar del #290 si vols fer imports, fer exports o envia missatges no treballis amb PHP 7.4 o superior!
No fem imports ni exports ni enviem missatges! :)
Si, fent el casting 'arregla aquest error: $account_types = (array) $account_types;
... $account_types = (array) $account_types; <-------
... Faig una alftra issue amb aixó?
No cal un altres issue.
No he pogut reproduir el problema, però mira si usant el PR #291 s'arregla.
( he vist que per exemple cridant /php/ctrl/Account.php?oper=getBalances&account_types=
si fallava, però no he vist cap lloc on es pugui cridat així el /php/ctrl/Account.php
)
Voldria saber com ho fas fallar: és una cridant a /php/ctrl/Account.php?oper=...
? amb quins paràmetres? (suposo usant que /manage_money.php
) però fent què?
L'error hem sortia clikant a "Diners" en concret a l'arxiu "accounts_operations.php" segons deia els popups d'error, no a Account.php, tot, a la vista "report_account.php" amb el parámetre what = "my_account" (com surt a la url de la captura):
He implementat el #291 per si un cas, sembla que funciona igual, es a dir, funciona correctament sense errors, estem fent proves a veure si realment funciona el fluxe de demanar comandes clickant a "Propera comanda".
Hem provat i funciona correctament de moment, Gracies a totes!
Dius:
He implementat el #291 per si un cas, sembla que funciona igual
Vol dir que segueix fallant o que ja funciona? La pantalla que mostres es de quan funciona amb el cast (array)
?
Si el #291 no ho arregla m'interessa saber on falla.
Jo no he pogut reproduir l'error usant /report_account.php?what=my_account
ni sense el #291
Fer un f12 al navegador i mira a xarxes les respostes en XML (n'hi ha a tres, segurament a una d'elles hi has de poder veure l'error), com l'exemple a sota.
La aplicació ja funciona correctament, la captura és d'aquest estat correcte sense errors, el casting va funcionar correctament, després de fer servir la versió 7.4 de PHP al nostre servidor.
Al aplicar el #291 la aplicació seguía funcionant correctament sense canvis visibles.
No es detecta cap error a les respostes 👍
La aplicació ja funciona correctament, la captura és d'aquest estat correcte sense errors, el casting va funcionar correctament, després de fer servir la versió 7.4 de PHP al nostre servidor. Al aplicar el #291 la aplicació seguía funcionant correctament sense canvis visibles. No es detecta cap error a les respostes 👍
Entenc doncs que sense el casting funciona? (PHP 7.4 amb el #291)
Doncs, com vaig comentar a https://github.com/jmueller17/Aixada/issues/288#issuecomment-1019290362, fent el casting es corregía l'error que donaba al accedir a "Diners" a la nostra aplicació. Així que si no fiquem el casting $account_types = (array) $account_types; a l'archiu /php/lib/account_operations.php a la funció get_account_types_filter, just avans de la declaració de la variable $_key = array_search(1000, $account_types, true); , provoca 4 errors als array_splice
@victorcillo Entesos, ara el #291 també inclou el cast.
Tenim un altre error a la secció Diners, no surten els comtes a gestionar als desplegables:
Tenim un altre error a la secció Diners, no surten els comtes a gestionar als desplegables...
Segurament no és un altre error, deu ser l'error que cast (array)
ha amagat.
(en el meu servidor local no he pogut reproduir el problema: master
i PHP 7.4.27)
Usa master
(ja té el #291), així usarem el mateix codi.
Digues què et responen:
/php/ctrl/Account.php?oper=getAccounts&all=0&account_types=1,2,1000,2000
/php/ctrl/Account.php?oper=getAccounts&all=0&account_types=1000
Crea també aquest php com try-get-array.php
:
<pre>
<?php var_export($_REQUEST); ?>
</pre>
i digues què respon el try-get-array.php?oper=getAccounts&all=0&account_types=1,2,1000,2000
@jorix Xavi, acabo de fer un petit canvi, un gran pas a la nostra aplicació, ja que a la línia 109 la funció get_accounts_XML cridava al métode get_account_types_filter amb el parámetre d'aquesta manera:
$account_types=''
lo que provocaba error, ja que el·liminant la assignació a cadena buida, torna a funcionar la part de Gestionar els diners i surten els comptes i UF's correctament als desplegables que fallaven...
$filter = $this->get_account_types_filter($account_types='');
$filter = $this->get_account_types_filter($account_types);
@jorix Xavi, acabo de fer un petit canvi, un gran pas a la nostra aplicació, ja que a la línia 109 la funció get_accounts_XML cridava al métode get_account_types_filter amb el parámetre d'aquesta manera: $account_types=''...
Sí, això s'ha d'arreglar. Però pensant en PHP 8.1 s'hi ha de posar:
public function get_accounts_XML($all=0, $account_types=array()) {
o
public function get_accounts_XML($all, $account_types) {
@victorcillo Però segueixo MOLT preocupat per no saber reproduir el vostre error!
Si us plau fes les proves que et vaig suggerir, sobre tot aquesta:
Crea també aquest php com
try-get-array.php
:<pre> <?php var_export($_REQUEST); ?> </pre>
i digues què respon el
try-get-array.php?oper=getAccounts&all=0&account_types=1,2,1000,2000
i què passa amb:
try-get-array.php?oper=getAccounts&all=0&account_types=1|2|1000|2000
perdona la tardança, he estat molt liat... el try-get-array.php?oper=getAccounts&all=0&account_types=1,2,1000,2000 retorna: array ( 'oper' => 'getAccounts', 'all' => '0', 'account_types' => '1,2,1000,2000', )
i try-get-array.php?oper=getAccounts&all=0&account_types=1|2|1000|2000 retorna: array ( 'oper' => 'getAccounts', 'all' => '0', 'account_types' => '1|2|1000|2000', )
NOTA: No he pogut fer servir la master perque tenim canvis personalitzats per la nostra cooperativa ..
- /php/ctrl/Account.php?oper=getAccounts&all=0&account_types=1,2,1000,2000
resposta1.txt archiu adjunt resposta1.txt
2. /php/ctrl/Account.php?oper=getAccounts&all=0&account_types=1000 resposta2.txt resposta2.txt
- public function get_accounts_XML($all, $account_types) {
he optat per agafar aquesta opció i funciona conrrectament.
perdona la tardança, he estat molt liat... el try-get-array.php?oper=getAccounts&all=0&account_types=1,2,1000,2000 retorna: array ( 'oper' => 'getAccounts', 'all' => '0', 'account_types' => '1,2,1000,2000', )
És el què hauria de ser, així que per aquí res...
- public function get_accounts_XML($all, $account_types) {
he optat per agafar aquesta opció i funciona conrrectament.
Ok
NOTA: No he pogut fer servir la master perque tenim canvis personalitzats per la nostra cooperativa ..
Seria interesant que la vostra personalització la tinguesiu com una bifurcació de master, fins i tot per vosaltres.
Així ho faig amb la Cistella-master
Es pot veure el codi?
(Al teu compte els repositoris Aixada estan buits)
En breus pujaré la nostra versió i crearé la bifurcació.
NOTA: No he pogut fer servir la master perque tenim canvis personalitzats per la nostra cooperativa ..
- /php/ctrl/Account.php?oper=getAccounts&all=0&account_types=1,2,1000,2000
resposta1.txt archiu adjunt resposta1.txt
Je je, ja he reproduït el problema (99% de probabilitats)
Quan vareu aplicar els canvis del PR #290 segurament ho vareu fer a ma, i potser la cosa va quedar:
public function get_accounts_XML($all=0, $account_types) {
$filter = $this->get_account_types_filter($account_types='');
// start XML
$strXML = '';
...
en lloc de:
public function get_accounts_XML($all=0, $account_types='') {
$filter = $this->get_account_types_filter($account_types);
// start XML
$strXML = '';
...
I de fet tu cites:
@jorix Xavi, acabo de fer un petit canvi,... que fallaven... $filter = $this->get_account_types_filter($account_types=''); ...
Vaig pensar que era un error d'escriptura en el comentari, devia ser un error d'escriptura en el codi.
Cap problema, la qüestió era saber el per què, i no tenir un dimoniet no detectable que es pogués manifestar en producció.
Algú sap a què pot ser degut l'error següent, sisplau? Gràcies. Fatal error: Array and string offset access syntax with curly braces is no longer supported in /customers/2/d/4/girasoldesantmarti.net/httpd.www/aixada/php/external/FirePHPCore/lib/FirePHPCore/ FirePHP.class.php on line 1093