Sziasztok!
A Google PHP API-ját (https://github.com/googleapis/google-api-php-client/) használjuk arra, hogy WP-ben lehessen a Workspace egyik csoportjának tagjait kezelni (törlés, hozzáadás).
Ez egészen tegnap délutánig működött rendben, de azóta tök változatos hibákat dobál. Legtöbbször aut kínja van, ilyesmi
Fatal error: Uncaught TypeError: Google\AuthHandler\Guzzle6AuthHandler::__construct(): Argument #1 ($cache) must be of type ?Psr\Cache\CacheItemPoolInterface, Google\Auth\Cache\MemoryCacheItemPool given, called in /home/oldalcim/public_html/wp-content/plugins/gwdapinewslettermembermanager/google-api/src/AuthHandler/AuthHandlerFactory.php on line 44 and defined in /home/oldalcim/public_html/wp-content/plugins/gwdapinewslettermembermanager/google-api/src/AuthHandler/Guzzle6AuthHandler.php:23 Stack trace: #0 /home/oldalcim/public_html/wp-content/plugins/gwdapinewslettermembermanager/google-api/src/AuthHandler/AuthHandlerFactory.php(44): Google\AuthHandler\Guzzle6AuthHandler->__construct(Object(Google\Auth\Cache\MemoryCacheItemPool), Array) #1 /home/oldalcim/public_html/wp-content/plugins/gwdapinewslettermembermanager/google-api/src/Client.php(1284): Google\AuthHandler\AuthHandlerFactory::build(Object(Google\Auth\Cache\MemoryCacheItemPool), Array) #2 /home/oldalcim/public_html/wp-content/plugins/gwdapinewslettermembermanager/google-api/src/Client.php(422): Google\Client->getAuthHandler() #3 /home/oldalcim/public_html/wp-content/plugins/gwdapinewslettermembermanager/google-api/src/Client.php(919): Google\Client->authorize() #4 /home/oldalcim/public_html/wp-content/plugins/gwdapinewslettermembermanager/google-api/src/Service/Resource.php(238): Google\Client->execute(Object(GuzzleHttp\Psr7\Request), 'Google\\Service\\...') #5 /home/oldalcim/public_html/wp-content/plugins/gwdapinewslettermembermanager/google-api/vendor/google/apiclient-services/src/Directory/Resource/Members.php(102): Google\Service\Resource->call('insert', Array, 'Google\\Service\\...') #6 /home/oldalcim/public_html/wp-content/plugins/gwdapinewslettermembermanager/functions.php(120): Google\Service\Directory\Resource\Members->insert('hirlevel@oldalcim....', Object(Google\Service\Directory\Member)) #7 /home/oldalcim/public_html/wp-includes/class-wp-hook.php(310): gwdapinewsletter_send_mail('') #8 /home/oldalcim/public_html/wp-includes/class-wp-hook.php(334): WP_Hook->apply_filters('', Array) #9 /home/oldalcim/public_html/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #10 /home/oldalcim/public_html/wp-admin/admin-ajax.php(203): do_action('wp_ajax_nopriv_...') #11 {main} thrown in /home/oldalcim/public_html/wp-content/plugins/gwdapinewslettermembermanager/google-api/src/AuthHandler/Guzzle6AuthHandler.php on line 23
A szépséghiba, hogy a PHP továbbra is 8.2, az OS továbbra is AlmaLinux. Semmi nem változott tegnap délután, egyetlen egy dolgot leszámítva. A Contabo kiírta, hogy a düsseldorfi DC-ben (ott van ez az instance) hálózati gondokkal küzdenek. Azóta néha a ping felszökik 40--400 ms közé, így elég használhatatlan a vas.
Ezt követően csináltam egy sima kis PHP script-et, ami beleír egy user-t az API-val a csoportba. ez rendben fut a problémás szerveren.
Ezután felhúztam egy WP-t egy másik szerverre és beadtam neki ezt a bővítményemet. Hiba nélkül fut. Meg persze a sima script is.
Rövid működés: A Google Cloud-on csináltam egy project-et, ebben service account-ot és ezt összedrótoztam a csoportkezeléssel. De ez a rész működik is. Itt egy példakód, mire gondolok, ezzel tesztelem.
<?php
require_once __DIR__ . '/google-api/vendor/autoload.php';
putenv('GOOGLE_APPLICATION_CREDENTIALS='.__DIR__.'/credentials.json');
$client = new Google\Client();
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/admin.directory.group');
$client->setSubject('theadam@domainunk.com');
$service = new Google\Service\Directory($client);
$nusr = new Google\Service\Directory\Member();
$nusr->setDeliverySettings('ALL_MAIL');
$nusr->setEmail('privatcimemtesztelni@gmail.com');
$nusr->setRole('MEMBER');
try
{
$service->members->insert('csoportcime@domainunk.com', $nusr);
echo 'Added successfully';
}
catch (Google\Service\Exception $e) {
echo 'Already signed up!';
}
try {
$r1 = $service->members->delete('csoportcim@domainunk.com', 'privatcimtesztelni@gmail.com');
echo "OK";
}
catch (Google\Service\Exception $e)
{
echo 'Member not in the list';
}
$res = $service->members->listMembers('csoportcim@domainunk.com');
foreach($res as $k)
{
print_r($k->email);
}
?>
Kikommentelem a leírós részt ha csak felírás kell. A vége rögvest mutatja, sikerült-e a mutatvány. De kódból mindig sikerül. A hibaelkapás azért ilyen, mert a Google sajnos nem ad effektív hibát arra, ha már valaki member, vagy épp nem létezik, emiatt necces is rá szűrni. If-fel persze lehet, de jelen esetben ez nem releváns.
A WP-bővítményben ugyanez szerepel, annyit leszámítva, hogy ott vannak mezők, amiknek az értékeit tölti be. De ha kiveszem a két try-catch blokkot a WP-bővítményből, az sem dob hibát:D meg a feladatát sem látja el. Változók okék, mert kiírattam. Kínomban már beraktam ezt a tesztkódot WP-bővítménybe és úgy elszállt, mint a papírrepülő, ugyanezzel a hibával. Az a kód, ami simán, WP nélkül, vagy másik szerveren WP-vel jó.
Lehetséges az, hogy a Contabo-nál valamiféle, általuk hálózatinak titulált, hiba azt okozza, hogy egy WP-bővítmény nem fut, de a bővítményben lévő Google API kézzel kezelhető a VPS-ről és másik gépen megy a bővítmény tiszta WP telepítéssel?
Már nem tudom, mit gondoljak, de olyan is megjelenik időnként, hogy módosítok egy fájlt FTP-n át, de hiába mentek rá és töltöm fel, nem változik a távoli oldalon. Ha új fájlt hozok létre, a tulajdonos user és group 0, reconnectnél meg eltűnik. SSH-n át működik, illetve késő este tegnap az FTP is megjavult, összhangban a ping csökkenésével. De mára megint használhatatlan az FTP.
Van bárkinek bármi tippje? Mit lenne érdemes ellenőrizni? Gondoltam rá, hogy át kéne húzni a teljes oldalt, de ez azért kellemes 10+ GB, egy másik szerverre. Arra is gondoltam, hogy egy WP-t rakni frissen erre a CPanel hosztra. De mivel a helyzet az, hogy maga a bővítmény fut rendesen máshol, a hibaüzenetre a Google nem mond semmit és a Google API-t tudom nyektetni pár soros PHP-ból a problémás szerverről, az FTP-vel együtt én arra gondolnék, hogy esetleg a hiba az én hatáskörömön túl esik...
Van valami ötletetek, merre lenne érdemes folytatni a hibakeresést?
Megoldás: Mivel a konkrét hiba nem lett meg, a problémát viszont meg kellett oldani, a Google API-s részt kiraktam egy külön script-be és azt hívogatja a WP extension. Így ráadásul modulárisabb, kapott egy kis JSON API-t, ami meg még jól jöhet:D
- 236 megtekintés
Hozzászólások
Ha tegnap délutánig ment és a kód nem változott, akkor felteszem a környezet igen.
- A hozzászóláshoz be kell jelentkezni
https://github.com/googleapis/google-api-php-client/blob/main/src/AuthH…
https://github.com/googleapis/google-auth-library-php/blob/main/src/Cac…
Vagy valaki belekavart a forrásba, vagy a PHP elfelejtette, hogy működik az öröklés?
- A hozzászóláshoz be kell jelentkezni
Nem érdemes fejleszteni (főleg bizonytalanul működő) shared hoston.
Inkább saját szerveren ill. ha nagyon igényled a egerészős kontroll panelt, akkor egy siteground cloud vps, google cloudban fut és meglehetősen barátságos a felület.
- A hozzászóláshoz be kell jelentkezni
Köszi mindenkinek a válaszokat! Lett egy megoldás, szétválasztottam a Google API-t és a WP bővítményt, így a WP bővítmény egy másik script-et hívogat. Na, így hibátlanul működik, perpill tehát a fellépő hibán sikerült úrrálenni.
@LJ67 Az oldal migrálását saját vasra jelenleg problémás lenne megoldani, mert akkor a mailing témát is be kéne lőni, meg számos apróságot, amit most a cPanel intéz. De alapvetően én is így látom, hogy hosszútávon ez lenne/lesz a megoldás.
TheAdam
- A hozzászóláshoz be kell jelentkezni