Sunday, September 11, 2016

How to fix "Error on rename of mysql frm due to permission denied" error message on mysql?

Try to integrate "lucadegasperi", an OAuth  component on my application recently, I was required to patch the database by running the given patch script. I encountered error message as shown below when run the patch script.

C:\wamp\www\lumen>php artisan migrate --seed
Migration table created successfully.


  [Illuminate\Database\QueryException]
  SQLSTATE[HY000]: General error: 7 Error on rename of '.\[DATABASE_NAME]\#sql-2f6
  c_6.frm' to '.\[DATABASE_NAME]\oauth_session_scopes.frm' (Errcode: 13 - Permissi
  on denied) (SQL: alter table `oauth_session_scopes` add index `oauth_sessio
  n_scopes_session_id_index`(`session_id`))



  [PDOException]
  SQLSTATE[HY000]: General error: 7 Error on rename of '.\[DATABASE_NAME]\#sql-2f6
  c_6.frm' to '.\[DATABASE_NAME]\oauth_session_scopes.frm' (Errcode: 13 - Permissi
  on denied)

I was using a superuser account to connect to mysql database. Should not prompt this error message

Solution

  • The root cause is the Mcafee antivirus on my Windows 10 stop the MySql to edit the FRM file when "alter" command is executed.
  •  In order to run the patch script, I temporary turn off the real time scanning on my Mcafee. Launch Mcafee and click on "Virus and Spyware protection" option.
  • Select "Real-Time Scanning"option and turn off the "Real-Time scanning" option.

  • Rerun the command "php artisan migrate --seed", all tables was created successfully.

Saturday, September 3, 2016

How to configure com_api with Joomla?

Software required (Assume Joomla is installed)
- Joomla version 3.6.2
- com_api plugin (ac_api_installer_v1.8.5.zip)

Installation steps

  • Login into admin console, click on "Extensions" → "Manage" → "Install" menu

  • Upload extension zip file to install the plugin.
  • Click on "Components" → "Api" → "API Keys", click on "New" button at "API Keys" page to launch "Add New Key" page

  • Click "User" button to add an user, click "Save & Close" button to dismiss the page. API key for the selected user is generated.

  • . Source code below is use to call "users" api from com_api, response in json format is returned
  • <?php
    
    $url="http://localhost/home/index.php?option=com_api&format=raw&app=users&resource=users&key=08a3ffdf9243bc883849e689c3749293"; 
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_NOBODY, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    $resp = curl_exec($ch);
    print_r($resp);
    
    // Close request to clear up some resources
    curl_close($ch);
    
  • Source code below is use to call "login" api from com_api, response in json format is returned
  • <?php
    $url="http://localhost/home/index.php?option=com_api&format=raw&app=users&resource=login&key=08a3ffdf9243bc883849e689c3749293"; 
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_NOBODY, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_exec($ch);
    
    $html = curl_exec($ch);
    print_r($html);
    
    curl_close($ch);
    
    

  • Source code below is use to call "config" api from com_api, response in json format is returned
  • <?php
    
    $url="http://localhost/home/index.php?option=com_api&format=raw&app=users&resource=config&key=08a3ffdf9243bc883849e689c3749293"; 
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_NOBODY, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_exec($ch);
    $html = curl_exec($ch);
    
    print_r($html);
    
    curl_close($ch);