GGshow reloaded GGshow reloaded

October 19, 2015

PHP 400 Quota Exceeded in Analytics Data Import

Issue:

  • Google Analytics Data Import failed after 50 upload.
  • Unable to upload large file for Analytics Data Import.
  • Intermittent error 400 with Management API.
PHP Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling POST https://www.googleapis.com/upload/analytics/v3/management/accounts/.../webproperties/.../customDataSources/.../uploads?uploadType=media: (400) Quota exceeded.' in /base/data/home/apps/.../google-api-php-client/src/Google/Http/REST.php:110 Stack trace: #0 /base/data/home/apps/.../google-api-php-client/src/Google/Http/REST.php(62): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client)) #1 [internal function]: Google_Http_REST::doExecute(Object(Google_Client), Object(Google_Http_Request)) #2 /base/data/home/apps/.../google-api-php-client/src/Google/Task/Runner.php(174): call_user_func_array(Array, Array)

Reason:
There are limits and quotas for Google Analytics Configuration and Reporting API. When daily project requests and daily write requests exceeded limit, API will return error 400.

Solution:

  • Fine-tune your application for quota usage; or
  • Request additional quota; or
  • Go to bed, try again tomorrow 🙂

Reference:
Configuration and Reporting API Limits and Quotas

Filed under: Google Cloud Platform,PHP — Tags: , , , , — GG @ 5:14 pm

PHP 403 Insufficient Permission in Analytics Data Import

Issue:

PHP Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling POST https://www.googleapis.com/upload/analytics/v3/management/accounts/.../webproperties/.../customDataSources/.../uploads?uploadType=media: (403) Insufficient Permission' in /base/data/home/apps/.../google-api-php-client/src/Google/Http/REST.php:110 Stack trace: #0 /base/data/home/apps/.../google-api-php-client/src/Google/Http/REST.php(62): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client)) #1 [internal function]: Google_Http_REST::doExecute(Object(Google_Client), Object(Google_Http_Request)) #2 /base/data/home/apps/.../google-api-php-client/src/Google/Task/Runner.php(174): call_user_func_array(Array, Array) #3 /base/data/home/apps/.../google-api-php-client/src/Google/Http/REST.php(46): Google_Task_Runner->run() #4 /base/data/ in /base/data/home/apps/.../google-api-php-client/src/Google/Http/REST.php on line 110

Reason:
Insufficient permission to perform an API query

Solution:

  • Ensure sufficient account permission granted for the service account (???@developer.gserviceaccount.com).
  • Ensure proper scopes defined in Service Account Authentication (Google_Auth_AssertionCredentials).
    Use Google_Service_Analytics::ANALYTICS ( or “https://www.googleapis.com/auth/analytics” ) instead of Google_Service_Analytics::ANALYTICS_READONLY ( or “https://www.googleapis.com/auth/analytics.readonly” ) if you need to perform an edit operation, e.g. Data Import.

Reference:

November 18, 2013

PHP client denied by server configuration

Issue:

  • AH01630: client denied by server configuration
  • Forbidden
    You don’t have permission to access /___ on this server.
    Apache/2.4.6 (Ubuntu) Server at www.___.com Port ___

Reason:

  • New way to do access control in Apache 2.4 and above.

Solution:

  • Edit Apache configuration , replace Allow from all to Require all granted

More Info:

Filed under: PHP,Web — Tags: , , , — GG @ 3:15 pm

December 26, 2012

Floating Point Precision

When ASP CInt( ( 0.3 - 0.2 ) * 10 ) gives you 1, but PHP (int) ( ( 0.3 - 0.2 ) * 10 ) gives you 0;

When MySQL SELECT CAST( 3 * ( 1.0 / 3 ) AS SIGNED ) gives you 1, but MSSQL SELECT CAST( 3 * ( 1.0 / 3 ) AS INT) gives you 0;

How accurate the result you can expect from your web application?

floating point

When your web application is built on top of the myth of the floating point, you can’t even expect 0.1 from JavaScript (0.3-0.2), it gives 0.09999999999999998

Filed under: Web — Tags: , , , , , , , , — GG @ 7:30 pm

July 4, 2012

Zend Framework – CLI

  • Show info
    zf show < config | manifest | phpinfo | profile | project.info | version >
  • Create project
    zf create project <projectName>
  • Enable layout
    zf enable layout
  • Create dbTable class
    zf create db-table <className> <tableName>
  • Create model
    zf create model <mapperName>
  • Create controller
    zf create controller <controllerName>
  • Create form
    zf create form <formName>
  • Create action
    zf create action <actionName> <controllerName>
  • Create view
    zf create view <controllerName> <viewName>
user@ubuntu:~$ zf ?
Zend Framework Command Line Console Tool v1.11.11
Usage:
    zf [--global-opts] action-name [--action-opts] provider-name [--provider-opts] [provider parameters ...]
    Note: You may use "?" in any place of the above usage string to ask for more specific help information.
    Example: "zf ? version" will list all available actions for the version provider.

Providers and their actions:
 Version
    zf show version mode[=mini] name-included[=1]
    Note: There are specialties, use zf show version.? to get specific help on them.

 Config
    zf create config
    zf show config
    zf enable config
    Note: There are specialties, use zf enable config.? to get specific help on them.
    zf disable config
    Note: There are specialties, use zf disable config.? to get specific help on them.

 Phpinfo
    zf show phpinfo

 Manifest
    zf show manifest

 Profile
    zf show profile

 Project
    zf create project path name-of-profile file-of-profile
    zf show project
    Note: There are specialties, use zf show project.? to get specific help on them.

 Application
    zf change application.class-name-prefix class-name-prefix

 Model
    zf create model name module

 View
    zf create view controller-name action-name-or-simple-name module

 Controller
    zf create controller name index-action-included[=1] module

 Action
    zf create action name controller-name[=Index] view-included[=1] module

 Module
    zf create module name

 Form
    zf enable form module
    zf create form name module

 Layout
    zf enable layout
    zf disable layout

 DbAdapter
    zf configure db-adapter dsn section-name[=production]

 DbTable
    zf create db-table name actual-table-name module force-overwrite
    Note: There are specialties, use zf create db-table.? to get specific help on them.

 ProjectProvider
    zf create project-provider name actions

Related Articles:

Filed under: PHP,Web,Zend Framework — Tags: , , , , , , , , , , — GG @ 2:24 pm

April 3, 2012

Debugging PHP application with Netbeans, Xdebug, and Chromium (or Google Chrome) in Ubuntu

  1. Requirements:
    Firstly, we must have Netbeans, Xdebug, Chromium (or Google Chrome) installed.How to check if Xdebug installed?

    user@ubuntu:~$ php -v
    PHP 5.3.6-13ubuntu3.6 with Suhosin-Patch (cli) (built: Feb 11 2012 02:17:16)
    Copyright (c) 1997-2011 The PHP Group
    Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
        with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
  2. Install Xdebug helper extension
    Visit this URL using Chromium (or Google Chrome).
    Press [Add To Chrome] button to install the Xdebug helper extension.
  3. Configure Xdebug helper options
    Under Chrome extensions, Xdebug helper, press Options.
    Select Netbeans for IDE key.
    Add domains to the domain filter whitelist.
  4. Configure Netbeans
    Tools > Options > General > Web Browser, press [Edit] button.
    Press [Add] button to add a new browser, set configuration as below:Process:
    /usr/bin/chromium-browser
    or
    /usr/bin/google-chromeArguments:
    -remote “{URL}” –user-data-dir=~/.cache/chromium
    or
    -remote “{URL}” –user-data-dir=~/.cache/google-chrome[OK]

    Ubuntu Netbean Chromium Debugging

  5. Debugging
    You can now debug a project (Ctrl+F5) or debug a file (Ctrl+Shift+F5)

    Ubuntu Netbean Chromium Debugging

    To control debugger session
    Finish Debugger Session (Shift+F5)
    Continue (F5)
    Step Over (F8)
    Step Into (F7)
    Step Out (Ctrl+F7)
    Run to Cursor (F4)
    or use the buttons in Debug Toolbar

Filed under: Web,Web Browsers — Tags: , , , , , — GG @ 12:08 pm

March 24, 2012

Web Development Environment in Ubuntu Linux

PART 1 – Ubuntu
Ubuntu is a computer operating system based on the Debian Linux distribution and distributed as free and open source software, using its own desktop environment.

  1. Download & install Ubuntu Linux.
  2. Update package index and upgrade OS.
    To update package index
    sudo apt-get update

    To upgrade all installed packages

    sudo apt-get upgrade
  3. Installing software packages
    To install a package
    sudo apt-get install <package-name>

    To remove a package

    sudo apt-get remove <package-name>

PART 2 – LAMP
LAMP is an acronym for a solution stack of free, open source software, referring to the first letters of Linux (operating system), Apache HTTP Server, MySQL (database software) and PHP (or sometimes Perl or Python), principal components to build a viable general purpose web server.

  1. Install LAMP
    To install Apache 2, MySQL 5, PHP 5, Apache PHP5 module, PHP MySQL package.
    sudo apt-get install apache2
    sudo apt-get install mysql-server
    sudo apt-get install mysql-client
    sudo apt-get install php5
    sudo apt-get install libapache2-mod-php5
    sudo apt-get install php5-mysql 

    or simply

    sudo apt-get install lamp-server^

    to install all packages below:
    perl-modules apache2 mysql-server-core-5.1 mysql-client-core-5.1 perl libmysqlclient16 libdbi-perl apache2-mpm-prefork apache2.2-common apache2.2-bin apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libcap2 ssl-cert libwrap0 mysql-server libapache2-mod-php5 php5-common php5-cli libclass-isa-perl libdbd-mysql-perl libplrpc-perl libhtml-template-perl mysql-common libnet-daemon-perl libpod-plainer-perl libswitch-perl tcpd mysql-client-5.1 mysql-server-5.1 php5-mysql

PART 3 – Optional Packages

  1. Zend Framework Zend Framework is an open source, object oriented web application framework for PHP 5.
    To install Zend Framwork CLI
    sudo apt-get install zend-framework-bin
  2. PHPUnit PHPUnit is a unit testing software framework for PHP.
    To install PHPUnit
    sudo apt-get install php-pear
    sudo pear channel-update pear.php.net
    sudo pear channel-discover pear.phpunit.de
    sudo pear channel-discover pear.symfony-project.com
    sudo pear update-channels
    sudo pear upgrade-all
    sudo pear install --alldeps phpunit/PHPUnit
    sudo apt-get install phpunit

    or

    sudo apt-get install php-pear
    sudo pear update-channels
    sudo pear config-set auto_discover 1
    sudo pear install --alldeps pear.phpunit.de/PHPUnit
    sudo apt-get install phpunit
  3. Xdebug
    Xdebug is a PHP extension which provides debugging and profiling capabilities.
    To install Xdebug
    sudo apt-get install php5-xdebug

    Add the following lines into etc/php5/conf.d/xdebug.ini if it does not exist.

    zend_extension = “/usr/lib/php5/20090626-lfs/xdebug.so”
    xdebug.remote_enable=on
    xdebug.remote_handler=dbgp
    xdebug.remote_host=localhost
    xdebug.remote_port=9000
  4. Optional PHP extensions
    To install PHP extensions
    sudo apt-get install php5-cgi php5-cli php5-curl php5-gd php5-idn php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-mysql php5-pgsql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

    * install only which needed.

  5. MySQL GUI tools
    1. Install MySQL Administrator and MySQL Query Browser
      sudo apt-get install mysql-admin
      sudo apt-get install mysql-query-browser

      and/or

    2. Install MySQL Workbench
      sudo apt-get install mysql-workbench
      sudo apt-get install mysql-query-browser

      and/or

    3. Install phpMyAdmin
      sudo apt-get install phpmyadmin

      Add the following line into /etc/apache2/apache2.conf

      Include /etc/phpmyadmin/apache.conf
  6. Integrated Development Environment
    1. Eclipse
      Install Eclipse IDE
      sudo apt-get install eclipse

      Install PHP Development Tools (PDT)

      sudo add-apt-repository ppa:yogarine/eclipse/ubuntu
      sudo apt-get update
      sudo apt-get install eclipse-pdt

      and/or

    2. Netbeans IDE
      Download & install Netbeans IDE
      Install Java
      sudo apt-get install sun-java6-jdk sun-java6-jre

      Download & install Netbeans

      sudo sh ./netbeans-7.1.1-ml-php-linux.sh

      Install Netbeans

      sudo apt-get install netbeans

      Or download & install the Java SE and NetBeans Cobundle

      sudo sh ./jdk-7u3-nb-7_1_1-linux-ml.sh
  7. Web browser debugging tool
    1. Firebug Install Firebug. or
    2. Developer tools in Chromium Browser Install Chromium Browser
      sudo apt-get install chromium-browser

      Press Ctrl+Shift+I to open Developer Tools

  8. Install version control system
    1. Subversion
      Subversion (SVN) is a software versioning and revision control system distributed under an open source license.
      Install Subversion
      sudo apt-get install subversion
      sudo apt-get install libapache2-svn
    2. Git
      Git is a distributed revision control and source code management (SCM) system with an emphasis on speed.
      Install Git
      sudo apt-get install git-core
      sudo apt-get install git-doc
      sudo apt-get install git-svn
      sudo apt-get build-dep git-core git-doc git-svn

PART 4 – Packages version
To check installed packages version

apache2 -v
php -v
mysql -V
phpunit --version
git --version
svn --version
java -version
zf show version
Filed under: Linux,MySQL,PHP,Web,Zend Framework — Tags: , , , , , — GG @ 10:26 pm

February 3, 2012

Duplicated placeholder output

Issue:

  • Zend Framework placeholder (headTitle, headMeta, headLink, headScript, headStyle, inlineScript) creates twice or multiple title/meta/link/script tags in HTML.
  • Duplicated title/meta/link/script tags generated from Zend Framework placeholder.
  • e.g.:

    source:

    <?php echo $this->headScript()->appendFile("/scripts/global.js") ?>
    <?php echo $this->headScript()->appendFile("/scripts/main.js") ?>

    output:

    <script src="/scripts/global.js" type="text/javascript"></script>
    <script src="/scripts/global.js" type="text/javascript"></script>
    <script src="/scripts/main.js" type="text/javascript"></script>

Reason:

  • Echo will output all elements in a placeholder.

Solution:

  • Echo only once for each placeholder.
  • e.g.:
    <?php $this->headLink()->appendStylesheet('/styles/global.css') ?>
    <?php $this->headLink()->appendStylesheet('/styles/main.css') ?>
    <?php echo $this->headLink() ?>
    
    <?php $this->headScript()->appendFile("/scripts/global.js") ?>
    <?php $this->headScript()->appendFile("/scripts/main.js") ?>
    <?php echo $this->headScript() ?>
Filed under: CSS,JavaScript,PHP,Web,Zend Framework — Tags: , , — GG @ 11:15 am

Resource matching “view” not found

Issue:

  • [error]
    [client 127.0.0.1] 
    PHP Fatal error:  Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'Resource matching "view" not found' in /home/user/ZendFramework-1.11.11/library/Zend/Application/Bootstrap/BootstrapAbstract.php:694
    Stack trace:
    #0 /home/user/ZendFramework-1.11.11/library/Zend/Application/Bootstrap/BootstrapAbstract.php(629): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('view')
    #1 /home/user/ZendFramework-1.11.11/library/Zend/Application/Bootstrap/BootstrapAbstract.php(586): Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap('view')
    #2 /home/user/ZendFramework-1.11.11/bin/jquery/application/Bootstrap.php(7): Zend_Application_Bootstrap_BootstrapAbstract->bootstrap('view')
    #3 /home/user/ZendFramework-1.11.11/library/Zend/Application/Bootstrap/BootstrapAbstract.php(669): Bootstrap->_initDoctype()
    #4 /home/user/ZendFramework-1.11.11/library/Zend/Application/Bootstrap/BootstrapAbstract.php(622): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('doctype')
    #5 /home/user/ZendFramework-1.11.11/library/Zend/Appli in /home/user/ZendFramework-1.11.11/library/Zend/Application/Bootstrap/BootstrapAbstract.php on line 694

Reason:

  • Resource matching “view” not found.

Solution:

  • Add the following line to application.ini
    resources.view[] =
Filed under: PHP,Web,Zend Framework — Tags: , , — GG @ 11:02 am

January 15, 2012

Double/Multiple execute of bootstrap

Issue:

  • bootstrap is being executed twice.
  • specified action is being called twice.
  • counter increased twice per hit.

Reason:

  • Web browser loads a file which is not exist, either through src or href attribute with invalid or empty value (e.g. favicon.ico, global.css, & etc.), web server treats it as “Page not found” error (404).
  • Default configuration for Zend application, the default application (index.php) will handle error 404, an error message “Invalid controller specified” will be displayed, indirectly causing code in bootstrap.php also being executed.

Solution:

  • Create a favicon.ico in DocumentRoot. and
  • Prevent loading any file which is not exist. or
  • Modify web server configuration (httpd.conf or .htaccess),
    rewrite rule to exclude paths for specified file type.

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} (.*).(woff|ttf|svg|js|ico|gif|jpg|png|css|htc|xml|txt|swf)$
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
Filed under: PHP,Web,Zend Framework — Tags: , , — GG @ 1:43 am
Older Posts »

© 2024 GGSHOW | Powered by WordPress