SlideShare a Scribd company logo
Let’s Exciting on Your
      Own PHP!
         Kousuke Ebihara
     <ebihara@tejimaya.com>
4           OpenPNE 3.2    3.4



•       (^o^)

•
•   OpenPNE                      PHP



•

    •            (Ebinglish)

    •
Go to our main topic...
My “php -i”
My “phpinfo()”
Let’s Exciting on Your Own PHP

Why do I want to get my own PHP ?
What for?


• Improving my work
• Just for fun
Use 5.3. And 5.2
• You should use PHP 5.3 for your
  developing, if you know about backward
  incompatible changes in the version
 • Some code for PHP 5.2 may not work
    under PHP 5.3 :( But the other way
    around if you are careful.
• Use 5.2 when you worry about your script.
  (So must ready to use PHP 5.2!)
But then ...
•   Do you know about the following script is not
    work under PHP 5.2? Why?
Result
Oh, it is just a bug!




http://bugs.php.net/bug.php?id=45820
Fixed ... ?
Trace changes

• From 16 Jul 2009, PHP is hosted on SVN
  and there is a GitHub mirror!
• So you can trace some changes in your git
  clone easy
 • Let’s tour through changes by using Git
Fixed only in PHP 5.3?
View changes
In PHP 5.2




 So dreadful...
Talk about something
        else
•   I’ve written the following code by an oversight in
    template (But it is only worked in
    “short_open_tag=1” environment):
       <?= $var ?>
•   And I’ve written the following code too (But it is
    only worked in “short_open_tag=0”
    environment):
    <?xml version=”1.0” encoding=”utf-8”?>
    <?php if ($flag): ?>
         :
A developer of Debian
has the interesting patch

• The patch makes the PHP 5.3 notify
  E_DEPRECATED error if the script uses
  short open tags (c.f. debian git repository)
 • If the feature had been in PHP, I wouldn’t
    have gotten the mentioned error.
Unfortunately, the patch
  may be rejected ...

• [PHP-DEV] Throwing an E_DEPRECATED
  for short_open_tag
  http://marc.info/?t=126334748600001
• But I really need it!
So I want to get
        the following PHP 5.3
       for improving my work


• Notify errors to code that doesn’t work
  under the php 5.2.x
• Notify to environment dependency code
  (e.g. short_open_tag)
I thought of...


• creating my own PHP!
Let’s Exciting on Your Own PHP

Build PHP
Knowing the way to
build PHP is important
• You can build many variations of PHP by
  your needs
• You can test your script under the specified
  version of PHP (e.g. array_unique() is
  breaked BC only in PHP 5.2.9)
Prepare to build PHP
•   Here we get source code from Git repository for our customizing
    •   http://github.com/php/php-src
•   See http://www.php.net/manual/ja/install.unix.php and
     http://www.php.net/svn.php
    •   Combinations of “autoconf”, “automake” and “libtool” is very important.You
        may get older version of them by your hand
    •   If you want to compile Git or SVN version of PHP 5.2, you must prepare flex
        2.5.4
    •   Some program may be not used if you using packaged PHP (because it
        contains pre-generated files)
•   If you want to use Git version of PHP, please get latest git and git-svn (I got errors
    by using git 1.6.5)
•   Of course, you must prepare some packages needed by extensions that you want
    to use
Prepare configuring
(only for SVN and Git version)
• SVN and Git version of PHP don’t have
  something to configure
• So you should execute “./buildconf”
 • Make sure that you use certain version of
    autoconf, automake and libtool. For
    example, I specified autoconf and
    autoheader to use (in Debian sid)
Configure PHP
• You can see the available configure options
  by executing “./configure --help”


• Some options is for extension (enable-xxx,
  disable-xxx, with-xxx, without-xxx). So you
  don’t need to be afraid of options if you
  know about your needed extensions
  • Build PHP many times is normal
My configure options
•   http://gist.github.com/277126
    •   ./configure --enable-mbstring
         --with-apxs2=/usr/bin/apxs2
         --with-gd --with-mysql --with-pgsql
         --with-pdo-mysql=/usr
         --with-pdo-pgsql --with-pdo-sqlite
         --with-pear --with-jpeg-dir=/usr/lib
         --with-curl --with-zlib
        •   If you want to use multiple php, you may want
            to add --with-config-file-path
Make and Install
• Do make
• Do make test (I always pass it)
• Do make install
 • Compiled php is in sapi/* .You can copy
    the binaries or intermediate files by your
    hand
Let’s Exciting on Your Own PHP

Customize PHP
For my working
Add original error level
 • I want to add “EE_COMPAT_52” and
   “EE_ENV_DEP”
  • EE_COMPAT_52 is for notifying “it may
     not be working under the php 5.2.x“
  • EE_ENV_DEP is for notifying “it may be
     environment depended code”
  • EE_ is Ebi_Error
For my working
Add original error level
•   I referred adding E_DEPRECATED commit
    •   $ git log --grep=”E_DEPRECATED”
•   I must rewrite:
    •   Zend/zend_errors.h : define constants
    •   Zend/zend.c : zend_error()
    •   Zend/zend_constants.c : zend_register_standard_constants()
    •   main/main.c : php_error_cb()
    •   And notify the new error by zend_error() (in Zend Engine)
        and php_error_docref (in PHP)
For my working
Add original error level
 •   Now, I have a patch for realizing this
     •    Adding EE_COMPAT_52 and EE_ENV_DEP
         • http://github.com/ebihara/php-src/commit/
             2fdd6fe27188ad3c5878b1fd3a8229e35f84d8fd


     •    Notice to <?
         • http://github.com/ebihara/php-src/commit/
             e6706d2b9a576cd81991868d9a8522ba50c37593


     •    Notice to $list[‘’] = ‘’;
         • http://github.com/ebihara/php-src/commit/
             1e9484ad04ca03b340bdd51d1f39acee32b86182
For my working
Add original error level
For my working
Add original error level
For my working
Add original error level

• I want to add notices based on
  http://www.php.net/manual/ja/
  migration53.deprecated.php
• Any idea?
For my fun
Insertion ;
For my fun
                Insertion ;
•   ;

    •   ECMA Script
                  (Automatic Semicolon Insertion)




        •   }

        •
For my fun
    Keyword Arguments
•      RSS
For my fun
 Keyword Arguments
• Python
Let's creating your own PHP (tejimaya version)
Question?

More Related Content

PDF
2021laravelconftwslides6
PDF
Automate Yo' Self
PDF
Composer - The missing package manager for PHP
PDF
Console Apps: php artisan forthe:win
PDF
Modern Perl for the Unfrozen Paleolithic Perl Programmer
PPSX
Setting advanced PHP development environment
PPTX
PSR-7 - Middleware - Zend Expressive
PDF
Php Dependency Management with Composer ZendCon 2016
2021laravelconftwslides6
Automate Yo' Self
Composer - The missing package manager for PHP
Console Apps: php artisan forthe:win
Modern Perl for the Unfrozen Paleolithic Perl Programmer
Setting advanced PHP development environment
PSR-7 - Middleware - Zend Expressive
Php Dependency Management with Composer ZendCon 2016

What's hot (20)

KEY
Perl in Teh Cloud
PPTX
Frontend testing with Codeception
PDF
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
PDF
A Modest Introduction to Swift
PDF
Apigility – Lightning Fast API Development - OSSCamp 2014
PDF
Padre user experience
PPTX
Code igniter unittest-part1
PPTX
CodeIgniter Ant Scripting
PDF
PHP 4? OMG! A small vademecum for obsolete software migration.
KEY
Pinto+Stratopan+Love
PDF
CPAN Training
PDF
PHP 5.4 - Begin your love affair with traits
KEY
CakePHP - The Path to 2.0
PDF
Zend expressive workshop
PPTX
Continuous feature-development
PDF
composer_talk_20160209
PPTX
PDF
Best Practices in PHP Application Deployment
PPTX
Code Igniter Code Sniffer
PPT
Composer - Package Management for PHP. Silver Bullet?
Perl in Teh Cloud
Frontend testing with Codeception
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
A Modest Introduction to Swift
Apigility – Lightning Fast API Development - OSSCamp 2014
Padre user experience
Code igniter unittest-part1
CodeIgniter Ant Scripting
PHP 4? OMG! A small vademecum for obsolete software migration.
Pinto+Stratopan+Love
CPAN Training
PHP 5.4 - Begin your love affair with traits
CakePHP - The Path to 2.0
Zend expressive workshop
Continuous feature-development
composer_talk_20160209
Best Practices in PHP Application Deployment
Code Igniter Code Sniffer
Composer - Package Management for PHP. Silver Bullet?
Ad

Viewers also liked (20)

PDF
State of Web Security RailsConf 2016
PPT
Asegúr@IT IV - Remote File Downloading
PDF
Bug Hunting Safari
PPT
Reversing JavaScript
PPTX
Cross Context Scripting attacks & exploitation
PDF
Exploiting Firefox Extensions
PPTX
Xml external entities [xxe]
PDF
Philip Hung Cao - Cloud security, the journey has begun
PDF
Bridging the gap - Security and Software Testing
PPTX
Nguyen Phuong Truong Anh - Some new vulnerabilities in modern web application
PDF
Million Browser Botnet
PPTX
15 Years of Web Security: The Rebellious Teenage Years
PDF
110864103 adventures-in-bug-hunting
PPTX
Pham Ngọc Bắc - An toàn thông tin dưới góc nhìn Quản lý theo tiêu chuẩn Quốc...
PDF
Richard Johnson, high performance fuzzing
PDF
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
PPTX
Trần Anh Khoa - Kautilya và Powershell trong kỹ thuật tấn công tiếp cận
PDF
Augmented reality in your web proxy
PPTX
Owasp Top 10 A1: Injection
PPT
Exploratory Testing As A Quest
State of Web Security RailsConf 2016
Asegúr@IT IV - Remote File Downloading
Bug Hunting Safari
Reversing JavaScript
Cross Context Scripting attacks & exploitation
Exploiting Firefox Extensions
Xml external entities [xxe]
Philip Hung Cao - Cloud security, the journey has begun
Bridging the gap - Security and Software Testing
Nguyen Phuong Truong Anh - Some new vulnerabilities in modern web application
Million Browser Botnet
15 Years of Web Security: The Rebellious Teenage Years
110864103 adventures-in-bug-hunting
Pham Ngọc Bắc - An toàn thông tin dưới góc nhìn Quản lý theo tiêu chuẩn Quốc...
Richard Johnson, high performance fuzzing
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
Trần Anh Khoa - Kautilya và Powershell trong kỹ thuật tấn công tiếp cận
Augmented reality in your web proxy
Owasp Top 10 A1: Injection
Exploratory Testing As A Quest
Ad

Similar to Let's creating your own PHP (tejimaya version) (20)

PPT
build your own php extension
PDF
Building Development Environment with php-build and phpenv
PDF
The why and how of moving to php 8
PDF
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
PDF
Php through the eyes of a hoster
PDF
Php through the eyes of a hoster phpbnl11
PDF
Continuous Integration at Mollie
PDF
Packaging perl (LPW2010)
PDF
FireBug And FirePHP
PDF
Cooking Perl with Chef: Real World Tutorial with Jitterbug
PPTX
They why behind php frameworks
PDF
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
PDF
Php through the eyes of a hoster confoo
KEY
Php through the eyes of a hoster: PHPNW10
PDF
Php on Windows
PDF
All the Laravel things: up and running to making $$
PPTX
Upstate CSCI 450 PHP Chapters 5, 12, 13
PPTX
Php extensions
PDF
Unit testing symfony plugins with php unit
PPTX
PyCourse - Self driving python course
build your own php extension
Building Development Environment with php-build and phpenv
The why and how of moving to php 8
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
Php through the eyes of a hoster
Php through the eyes of a hoster phpbnl11
Continuous Integration at Mollie
Packaging perl (LPW2010)
FireBug And FirePHP
Cooking Perl with Chef: Real World Tutorial with Jitterbug
They why behind php frameworks
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
Php through the eyes of a hoster confoo
Php through the eyes of a hoster: PHPNW10
Php on Windows
All the Laravel things: up and running to making $$
Upstate CSCI 450 PHP Chapters 5, 12, 13
Php extensions
Unit testing symfony plugins with php unit
PyCourse - Self driving python course

More from Kousuke Ebihara (8)

PDF
お前は PHP の歴史的な理由の数を覚えているのか
KEY
Open pne3 with_symfony
PPTX
Hybrid Onboarding
PPTX
Using Symfony Templating On Symfony 1
PPTX
Introduction of symfony development process & What's symfony 1.3?
PPTX
OAuthで気持ちのいい アクセス制御を
PPTX
Php5.3ってなんなんだー
PPTX
ルーティングを使って シンプルなアプリケーション開発を
お前は PHP の歴史的な理由の数を覚えているのか
Open pne3 with_symfony
Hybrid Onboarding
Using Symfony Templating On Symfony 1
Introduction of symfony development process & What's symfony 1.3?
OAuthで気持ちのいい アクセス制御を
Php5.3ってなんなんだー
ルーティングを使って シンプルなアプリケーション開発を

Recently uploaded (20)

PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
PDF
CIFDAQ'S Market Insight: BTC to ETH money in motion
PDF
Revolutionize Operations with Intelligent IoT Monitoring and Control
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PDF
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
PDF
Doc9.....................................
PDF
Test Bank, Solutions for Java How to Program, An Objects-Natural Approach, 12...
PDF
DevOps & Developer Experience Summer BBQ
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Software Development Company | KodekX
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
PDF
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
A Day in the Life of Location Data - Turning Where into How.pdf
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
CIFDAQ'S Market Insight: BTC to ETH money in motion
Revolutionize Operations with Intelligent IoT Monitoring and Control
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Doc9.....................................
Test Bank, Solutions for Java How to Program, An Objects-Natural Approach, 12...
DevOps & Developer Experience Summer BBQ
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
New ThousandEyes Product Innovations: Cisco Live June 2025
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Software Development Company | KodekX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...

Let's creating your own PHP (tejimaya version)

  • 1. Let’s Exciting on Your Own PHP! Kousuke Ebihara <[email protected]>
  • 2. 4 OpenPNE 3.2 3.4 • (^o^) • • OpenPNE PHP • • (Ebinglish) •
  • 3. Go to our main topic...
  • 6. Let’s Exciting on Your Own PHP Why do I want to get my own PHP ?
  • 7. What for? • Improving my work • Just for fun
  • 8. Use 5.3. And 5.2 • You should use PHP 5.3 for your developing, if you know about backward incompatible changes in the version • Some code for PHP 5.2 may not work under PHP 5.3 :( But the other way around if you are careful. • Use 5.2 when you worry about your script. (So must ready to use PHP 5.2!)
  • 9. But then ... • Do you know about the following script is not work under PHP 5.2? Why?
  • 11. Oh, it is just a bug! http://bugs.php.net/bug.php?id=45820
  • 13. Trace changes • From 16 Jul 2009, PHP is hosted on SVN and there is a GitHub mirror! • So you can trace some changes in your git clone easy • Let’s tour through changes by using Git
  • 14. Fixed only in PHP 5.3?
  • 16. In PHP 5.2 So dreadful...
  • 17. Talk about something else • I’ve written the following code by an oversight in template (But it is only worked in “short_open_tag=1” environment): <?= $var ?> • And I’ve written the following code too (But it is only worked in “short_open_tag=0” environment): <?xml version=”1.0” encoding=”utf-8”?> <?php if ($flag): ?> :
  • 18. A developer of Debian has the interesting patch • The patch makes the PHP 5.3 notify E_DEPRECATED error if the script uses short open tags (c.f. debian git repository) • If the feature had been in PHP, I wouldn’t have gotten the mentioned error.
  • 19. Unfortunately, the patch may be rejected ... • [PHP-DEV] Throwing an E_DEPRECATED for short_open_tag http://marc.info/?t=126334748600001 • But I really need it!
  • 20. So I want to get the following PHP 5.3 for improving my work • Notify errors to code that doesn’t work under the php 5.2.x • Notify to environment dependency code (e.g. short_open_tag)
  • 21. I thought of... • creating my own PHP!
  • 22. Let’s Exciting on Your Own PHP Build PHP
  • 23. Knowing the way to build PHP is important • You can build many variations of PHP by your needs • You can test your script under the specified version of PHP (e.g. array_unique() is breaked BC only in PHP 5.2.9)
  • 24. Prepare to build PHP • Here we get source code from Git repository for our customizing • http://github.com/php/php-src • See http://www.php.net/manual/ja/install.unix.php and http://www.php.net/svn.php • Combinations of “autoconf”, “automake” and “libtool” is very important.You may get older version of them by your hand • If you want to compile Git or SVN version of PHP 5.2, you must prepare flex 2.5.4 • Some program may be not used if you using packaged PHP (because it contains pre-generated files) • If you want to use Git version of PHP, please get latest git and git-svn (I got errors by using git 1.6.5) • Of course, you must prepare some packages needed by extensions that you want to use
  • 25. Prepare configuring (only for SVN and Git version) • SVN and Git version of PHP don’t have something to configure • So you should execute “./buildconf” • Make sure that you use certain version of autoconf, automake and libtool. For example, I specified autoconf and autoheader to use (in Debian sid)
  • 26. Configure PHP • You can see the available configure options by executing “./configure --help” • Some options is for extension (enable-xxx, disable-xxx, with-xxx, without-xxx). So you don’t need to be afraid of options if you know about your needed extensions • Build PHP many times is normal
  • 27. My configure options • http://gist.github.com/277126 • ./configure --enable-mbstring --with-apxs2=/usr/bin/apxs2 --with-gd --with-mysql --with-pgsql --with-pdo-mysql=/usr --with-pdo-pgsql --with-pdo-sqlite --with-pear --with-jpeg-dir=/usr/lib --with-curl --with-zlib • If you want to use multiple php, you may want to add --with-config-file-path
  • 28. Make and Install • Do make • Do make test (I always pass it) • Do make install • Compiled php is in sapi/* .You can copy the binaries or intermediate files by your hand
  • 29. Let’s Exciting on Your Own PHP Customize PHP
  • 30. For my working Add original error level • I want to add “EE_COMPAT_52” and “EE_ENV_DEP” • EE_COMPAT_52 is for notifying “it may not be working under the php 5.2.x“ • EE_ENV_DEP is for notifying “it may be environment depended code” • EE_ is Ebi_Error
  • 31. For my working Add original error level • I referred adding E_DEPRECATED commit • $ git log --grep=”E_DEPRECATED” • I must rewrite: • Zend/zend_errors.h : define constants • Zend/zend.c : zend_error() • Zend/zend_constants.c : zend_register_standard_constants() • main/main.c : php_error_cb() • And notify the new error by zend_error() (in Zend Engine) and php_error_docref (in PHP)
  • 32. For my working Add original error level • Now, I have a patch for realizing this • Adding EE_COMPAT_52 and EE_ENV_DEP • http://github.com/ebihara/php-src/commit/ 2fdd6fe27188ad3c5878b1fd3a8229e35f84d8fd • Notice to <? • http://github.com/ebihara/php-src/commit/ e6706d2b9a576cd81991868d9a8522ba50c37593 • Notice to $list[‘’] = ‘’; • http://github.com/ebihara/php-src/commit/ 1e9484ad04ca03b340bdd51d1f39acee32b86182
  • 33. For my working Add original error level
  • 34. For my working Add original error level
  • 35. For my working Add original error level • I want to add notices based on http://www.php.net/manual/ja/ migration53.deprecated.php • Any idea?
  • 37. For my fun Insertion ; • ; • ECMA Script (Automatic Semicolon Insertion) • } •
  • 38. For my fun Keyword Arguments • RSS
  • 39. For my fun Keyword Arguments • Python