Nadogradnjom verzije, joomla je tražila da promijenim PHP 5.6 na 7.x, čime sam izgubio WebRequest iz desktop (c#) aplikacije. Request se adresira na xxx.php skriptu. Može li mi netko reći dali je problem u c# ili .php scripti ili kako otkloniti problem
To prvo moraš debugirat..... Dakle ako request ne prolazi, mora vratit nekakav error ili zapisat na serveru u error log....
Prvo nam to treba da vidimo u čemu je problem, a onda možemo na otklanjanje.
P.S. php stavi na verziju 7.1.x, ne ići na višu od toga....
Error log se ne 'skriva' negdje na serveru...
Stavio sam PHP veziju 7.1.
Naknadno saznanje:
Greška je u .php. Unutar scripte priključujem se na bazu podataka sa
$con = mysql_connect($myServer, $myUser, $myPass)
or die("Ne mogu se povezat na server " . $dbName );
Funkcija mysql_connect() je u 7.1 drugačije definirana - još ne znam kako
Dobro, a zašto pobogu koristiš ručno spajanje i komunikaciju s mySql serverom, ako Joomla ima klase za to? :)
Čak i ako koristiš svoj nekakav fajl/skriptu mimo Joomle, mogu ti dati upute za loadanje Joomlinog framework-a pa opet imaš dostupne sve klase i u poznatom si okruženju....
Ja inače to koristim za Joomla cron job-ove :)
Evo i jedan banalni primjer kak se to radi (s logiranjem u custom file).....
Znači skripta.php staviš na root Joomle i unutra kreneš ovako....
<?php
$shellnotPass = 'NOT AUTHORIZED';
// No direct access
define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);
if (file_exists(dirname(__FILE__) . '/defines.php')) {
include_once dirname(__FILE__) . '/defines.php';
}
if (!defined('_JDEFINES')) {
define('JPATH_BASE', dirname(__FILE__));
require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';
// Set time limit to 0
set_time_limit(0);
$secret = md5('JA SAM LOZINKA'); // da4e5a3855138cec50814a6290eef97d
$getSecret = isset($_GET['secret']) ? trim(htmlentities(strip_tags((string) $_GET['secret']))) : false;
$app = JFactory::getApplication('site');
// Ensure the script can be only run with secret passphrase
if ($secret !== $getSecret) {
die($shellnotPass);
}
/******************/
/* Load libraries */
/******************/
if (!class_exists('JFile'))
jimport('joomla.filesystem.file');
// Custom log file and logging
\Joomla\CMS\Log\Log::addLogger(array('text_file' => 'cron_debug_' . date('Y') . '/cron_debug.php', 'text_entry_format' => '{DATETIME} {PRIORITY} {MESSAGE}'), \Joomla\CMS\Log\Log::ALL, array('cron_debug'));
$message = 'STARTED CRON';
\Joomla\CMS\Log\Log::add($message, \Joomla\CMS\Log\Log::DEBUG, 'cron_debug');
$db = \Joomla\CMS\Factory::getDbo();
$query = $db->getQuery(true);
$query->select('.........')
->from('..........')
->join('...', '.......')
;
$db->setQuery($query)->execute();
$items = $db->loadObjectList();
$message = 'END CRON';
\Joomla\CMS\Log\Log::add($message, \Joomla\CMS\Log\Log::DEBUG, 'cron_debug');
$message = '==================================================';
\Joomla\CMS\Log\Log::add($message, \Joomla\CMS\Log\Log::DEBUG, 'cron_debug');
I onda tu skriptu pokrenem sa "www.domena.hr/skripta.php?secret=da4e5a3855138cec50814a6290eef97d" :)
Riješio sam!
7.x ne koristi familiju mysql_ nego mysqli_
Razlika je u:
mysqli_connect ima 4 parametra (+$dbName)
mysqli_query ima 2 parametra (+$con)
Dario
Ja Joomlu, općenito i web, koristim sa štapom (šepajući), tako da si ne mogu priuštiti luksuz obučenog programera. Ovaj problem je nastao u dijelu gdje koristim web za održavanje desktop aplikacije (provjera nove verzije, i preuzimanje ako treba).
U svakom slučaju hvala na odgovoru
Vidiš vidiš..... Ovo za MySql sam znal, al bogme mi nije bilo ni na kraj pameti da bi bilo do toga :)