آموزش ارتقا به PHP 7 در WAMP Server

12 دیدگاه

بروزرسانی WAMP Server به PHP 7.0 ساده تر از چیزی هست که به نظر می رسه.در این مقاله طی چند قدم این کار را انجام می دهیم.

 

در همین رابطه :   آموزش ارتقا نسخه PHP 5.6 به PHP 7.1 در XAMPP ویندوز

 

پیش نیازها

نصب بودن WAMP:

اگر هنوز آن را نصب نکرده اید می توانید از اینجا دانلود کنید:

http://www.wampserver.com/en

 

نصب بودن Visual C++ 2015 (VC14) redistributables:

از آنجا که php 7 با Visual C++ 2015 (اختصارا VC14) کامپایل شده است، موقع ارتقا php هم باید نصب باشد .می توانید از آدرس زیر دانلود کنید:

https://www.microsoft.com/en-us/download/details.aspx?id=48145

 

PHP 7

از آدرس زیر فایل های زبان php 7 را دانلود کنید.هم نسخه 32 بیتی و هم 67 بیتی Thread Safe:

http://windows.php.net/download

 


 

بعد از اینکه همه این پیش نیازها آماده و 2 مورد اول نصب شدند آماده ایم تا کار ارتقا را شروع کنیم.

1.یک پوشه در مسیر wamp ایجاد کنید به این صورت:

/wamp/bin/php/php7.0.2/

نکته : عبارت “php7.0.2” را باید با نسخه ای که خودتان دانلود کرده اید تغییر دهید.مثلا اگر نسخه php7.1.1 را دانلود کرده اید ، اسم پوشه هم باید همین باشد.

2.فایل فشرده مربوط به php را که دانلود کرده اید ،داخل پوشه بالا unzip کنید.

3.وارد پوشه فوق (/wamp/bin/php/php7.0.2/) شوید و یک فایل با نام “wampserver.conf” با محتویات زیر ایجاد کنید:

// wampserver.conf
<?php  
    $phpConf['phpIniDir'] = '.';
    $phpConf['phpExeDir'] = '.';
    $phpConf['phpConfFile'] = 'php.ini';

    //PHP 7 needs Apache 2.4.x and doesn't work with Apache 2.2.x

    $phpConf['apache']['2.4']['LoadModuleName'] = 'php7_module';
    $phpConf['apache']['2.4']['LoadModuleFile'] = 'php7apache2_4.dll';
    $phpConf['apache']['2.4']['AddModule'] =  '';
?>

4.فایل config.inc.php را از مسیر /wamp/scripts/config.inc.php باز کنید

5.در آرایه $phpDllToCopy ،مقادیر زیر را اضافه کنید:

'icudt56.dll',  
'icuin56.dll',  
'icuio56.dll',  
'icule56.dll',  
'icuuc56.dll',

نکته : اسامی این فایل ها می تواند برای نسخه های مختلف php متفاوت باشد.برای اطلاع از نام درست فایل ها برای شما،به مسیر /wamp/bin/php/php7.0.2/ رفته و هر فایلی هم نامش با icu آغاز می شود ،داخل آرایه $phpDllToCopy اضافه کنید.

فایل نهایی شبیه این خواهد بود:

// config.inc.php
// Above code was omitted for brevity

$phpDllToCopy = array (
    'icudt56.dll',
    'icuin56.dll',
    'icuio56.dll',
    'icule56.dll',
    'icuuc56.dll',
    'icudt52.dll', //[modif oto] - Ajouts pour éviter unknown error PHP 5.6.a2
    'icuin52.dll',
    'icuio52.dll',
    'icule52.dll',
    'iculx52.dll',
    'icutest52.dll',
    'icutu52.dll',
    'icuuc52.dll',
    'icudt51.dll', //[modif oto] - Ajouts pour éviter unknown error PHP 5.5.6
    'icuin51.dll',
    'icuio51.dll',
    'icule51.dll',
    'iculx51.dll',
    'icutest51.dll',
    'icutu51.dll',
    'icuuc51.dll',
    'icudt50.dll', //[modif oto] - Ajouts pour éviter unknown error PHP 5.5
    'icuin50.dll',
    'icuio50.dll',
    'icule50.dll',
    'iculx50.dll',
    'icutest50.dll',
    'icutu50.dll',
    'icuuc50.dll',
    'icudt49.dll', //[modif oto] - Ajouts pour éviter unknown error PHP 5.3/5.4
    'icuin49.dll',
    'icuio49.dll',
    'icule49.dll',
    'iculx49.dll',
    'icutest49.dll',
    'icutu49.dll',
    'icuuc49.dll',
    'libeay32.dll',
    'libsasl.dll', //[modif oto] - Ajout pour éviter unknown error
    'libintl.dll',
    'php5isapi.dll',
    'php5nsapi.dll',
    'ssleay32.dll',
    'php5ts.dll',
    'fribidi.dll', //[modif oto] - Ci-contre et dessous pour PHP 5.2.x
    'fdftk.dll',   // Peuvent être supprimés pour PHP 5.3.0 ou plus
    'libmcrypt.dll',
    'libmhash.dll',
    'libmysql.dll',
    'libmysqli.dll',
    'msql.dll',
    'ntwdblib.dll',
    'php5activescript.dll',
);

6.حالا باید بریم سراغ فایل php.ini.دو راه برای این کار داریم . راه اول :

  • به مسیر /wamp/bin/php/php5.5.12/ برید (دفت کنید که php5.5.12 نسخه فعلی php شماست که شاید کمی متفاوت از این باشد)
  • فایل php.ini را پیدا کنید
  • این فایل را به مسیر /wamp/bin/php/php7.0.2/ کپی کنید
  • فایل کپی شده را از /wamp/bin/php/php7.0.2/php.ini را باز کنید
  • در فایل php.ini (مربوط به php 7.0.2) هر جایی که نسخه php قدیمی (5.5.12) را پیدا کردید به نسخه جدید (7.0.2) تغییر بدید.مثلا:
    از : extension_dir = "c:/wamp/bin.php/php5.5.12/ext/"
    به:  extension_dir = "c:/wamp/bin.php/php7.0.2/ext/"
  • موقع نگارش این مقاله هنوز نسخه پایداری برای ماژول xdebug در php 7 ارائه نشده است.بنابراین تا زمان ارائه، این ماژول را به اضافه کردن ; در اول خط ،غیر فعال می کنیم
    از : zend_extension = "c:/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11-x86_64.dll"
    به: ;zend_extension = "c:/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11-x86_64.dll"
  • بخش Windows Extensions را پیدا کرده و آن را با کد زیر جایگزین کنید . دقت کنید که ماژول هایی که قبلا فعال بودند ،حالا نیز فعال باشند .
    ; Windows Extensions
    ; Note that ODBC support is built in, so no dll is needed for it.
    ; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
    ; extension folders as well as the separate PECL DLL download (PHP 5).
    ; Be sure to appropriately set the extension_dir directive.
    ;
    extension=php_bz2.dll  
    extension=php_curl.dll  
    ;extension=php_com_dotnet.dll
    ;extension=php_enchant.dll
    extension=php_fileinfo.dll  
    ;extension=php_ftp.dll
    extension=php_gd2.dll  
    extension=php_gettext.dll  
    extension=php_gmp.dll  
    extension=php_intl.dll  
    extension=php_imap.dll  
    ;extension=php_interbase.dll
    extension=php_ldap.dll  
    extension=php_mbstring.dll  
    extension=php_exif.dll      ; Must be after mbstring as it depends on it  
    extension=php_mysqli.dll  
    ;extension=php_odbc.dll
    extension=php_openssl.dll  
    ;extension=php_pdo_firebird.dll
    extension=php_pdo_mysql.dll  
    ;extension=php_pdo_oci.dll
    ;extension=php_pdo_odbc.dll
    ;extension=php_pdo_pgsql.dll
    extension=php_pdo_sqlite.dll  
    ;extension=php_pgsql.dll
    ;extension=php_phpdbg_webhelper.dll
    ;extension=php_shmop.dll
    
    ; The MIBS data available in the PHP distribution must be installed.
    ; See [www.php.net]
    ;extension=php_snmp.dll
    
    extension=php_soap.dll  
    extension=php_sockets.dll  
    extension=php_sqlite3.dll  
    ;extension=php_sysvshm.dll
    ;extension=php_tidy.dll
    extension=php_xmlrpc.dll  
    extension=php_xsl.dll

و راهکار دوم به این شکل است:

  • به /wamp/bin/php/php7.0.2/ بروید
  • فایل php.ini را باز کنید
  • جایگزینی های زیر را انجام دهید یعنی خط اول را با گذاشتن علامت ; در ابتدای آن غیر فعال کنید و خط دوم را اضافه کنید.(دقت کنید اگر ومپ را در مسیری غیر از C:/wamp نصب کرده اید،مسیر دقیق را در پایین جایگزین کنید)
    ;error_log = php_errors.log
    error_log = C:/wamp/logs/php_error.log
    
    ;extension_dir = "./"
    extension_dir = "C:/Wamp/bin/php/php7.0.2/ext/"  
    
    ;upload_tmp_dir =
    upload_tmp_dir = "C:/wamp/tmp"  
    
    ;date.timezone =
    date.timezone = UTC  
    ;(or your own timezone)
    
    ;sendmail_from = [email protected]
    sendmail_from = ایمیل شما  
    
    mysql.default_port =  
    mysql.default_port = 3306  
    
    ;session.save_path = "/tmp"
    session.save_path = "C:/wamp/tmp"   
    
    soap.wsdl_cache_dir="/tmp"  
    soap.wsdl_cache_dir="C:/wamp/tmp"  
    

     

  • بخش Windows Extensions را پیدا کرده و آن را با کد زیر جایگزین کنید . دقت کنید که ماژول هایی که قبلا فعال بودند ،حالا نیز فعال باشند .
    ; Windows Extensions
    ; Note that ODBC support is built in, so no dll is needed for it.
    ; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
    ; extension folders as well as the separate PECL DLL download (PHP 5).
    ; Be sure to appropriately set the extension_dir directive.
    ;
    extension=php_bz2.dll  
    extension=php_curl.dll  
    ;extension=php_com_dotnet.dll
    ;extension=php_enchant.dll
    extension=php_fileinfo.dll  
    ;extension=php_ftp.dll
    extension=php_gd2.dll  
    extension=php_gettext.dll  
    extension=php_gmp.dll  
    extension=php_intl.dll  
    extension=php_imap.dll  
    ;extension=php_interbase.dll
    extension=php_ldap.dll  
    extension=php_mbstring.dll  
    extension=php_exif.dll      ; Must be after mbstring as it depends on it  
    extension=php_mysqli.dll  
    ;extension=php_odbc.dll
    extension=php_openssl.dll  
    ;extension=php_pdo_firebird.dll
    extension=php_pdo_mysql.dll  
    ;extension=php_pdo_oci.dll
    ;extension=php_pdo_odbc.dll
    ;extension=php_pdo_pgsql.dll
    extension=php_pdo_sqlite.dll  
    ;extension=php_pgsql.dll
    ;extension=php_phpdbg_webhelper.dll
    ;extension=php_shmop.dll
    
    ; The MIBS data available in the PHP distribution must be installed.
    ; See [www.php.net]
    ;extension=php_snmp.dll
    
    extension=php_soap.dll  
    extension=php_sockets.dll  
    extension=php_sqlite3.dll  
    ;extension=php_sysvshm.dll
    ;extension=php_tidy.dll
    extension=php_xmlrpc.dll  
    extension=php_xsl.dll

     

  • حالا در مسیر /wamp/bin/php/php7.0.2/ یکی کپی از فایل php.ini ایجاد کرده و اسمش را به phpForApache.ini تغییر دهید.
  • از WAMP Server خارج شوید
  • مطمئن شوید که مسیر php 7 را به عنوان path environment variable به ویندوز اضافه کرده اید.(مثال)
  • استارت ومپ سرور رو بزنید
    روی آیکن سبز آن کنار ساعت ویندوز کلیک کنید
    از PHP -> Version -> 7.0.2 نسخه جدید php رو انتخاب کنید

حالا اگر همه چیز طبق روال و درست پیش رفته باشد ،ومپ ری استارت شده و php جدید آماده استفاده است.

برای اطمینان به مسیر http://localhost/?phpinfo=1 رفته و نسخه php را چک کنید. تبریک نسخه جدید php برای شما آماده استفاده است.

 

مشکلات متداول

مشکل : نسخه جدید php در منوی PHP ومپ موجود نیست!

راه حل : مطمئن شوید که نسخه ای از /wamp/bin/php/php7.0.2/php.ini را کپی کرده و نامش را به phpForApache.ini تغییر داده اید

مشکل : آیکن ومپ من بعد از استارت قرمز یا نارنجی مانده و سبز نمی شود!

راه حل : این مشکل می تواند علت های مختلفی داشته باشد.برای یافتن علت کارهای زیر را انجام دهید:

  • خط فرمان ویندوز (cmd.exe) را باز کنید و مسیر آن را به این پوشه تغییر دهید : C:/wamp/bin/apache/apache2.4.9/bin
  • حالا دستور .\httpd -t را وارد کنید
  • اگر خطایی مخصوصا در نحو کدها موجود باشد خواهید دید.فراموش نکنید به لاگ های خطا هم نگاه کنید

منبع

 

دسته بندی : PHP

12 نظر

  1. سلام
    من همه مراحلو رفتم ولی این Windows Extensions بخشو پیدا نکردم. تا مراحل آخرم پیش رفتم ورژن جدید اضافه شده ولی روش یه علامت هشدار زده.
    به نظرتون مشکلش از کجاست؟ ممنون میشم راهنماییم کنین

  2. سلام. خیلی خیلی ممنون. من طبق آموزش شما برای بروزرسانی به نسخه php7.3.4 عمل کردم و بروزرسانی انجام شد. آموزشتون عالی بود.

  3. بسیار عالی بود.
    طبق همین دستورالعمل پیش رفتم و تونستم php7.2.12 رو نصب کنم.
    نکته این که باید نسخه‌ی thread safe رو نصب کنیم. یعنی برای نسخه‌ای که من استفاده کردم:
    php-7.2.12-Win32-VC15-x64.zip

  4. در خصوص بخش “مشکلات متداول” یکی از راه‌ها این هست که به Event Viewer ویندوز مراجعه کنید. در بخش Windows Logs و قسمت Application تقریبا هر مشکلی که در راه اندازی سرویس‌های ومپ وجود داشته باشد بصورت Detail توضیح داده شده. من برای نصب آخرین نسخه Apache و MySql از این قسمت خیلی استفاده کردم و خیلی کمکم کرد.

  5. سلام
    من کامپایل VC15 رو روی wamp نصب و اجرا کردم.
    باتوجه به توضیحاتی که در اینترنت خوندم متوجه شدم نسخه VC15 نسبت به VC14 بهینه سازی‌های زیادی به خصوص در سرعت داره.
    چرا این نسخه رو برای نصب استفاده نکردید؟
    لطفا راهنمای نصب MySql 8 رو هم برای دوستان بذارید. من این کار رو کردم و سرعت دیتابیس من واقعا بهبود پیدا کرد. دیتابیس من چیزی حدود 10گیگ حجمش هست. توصیه میکنم نسخه 8 رو امتحان کنید.

  6. سلام وقتتون بخیر
    من تمام مراحل رو کامل انجام دادم ولی الان ورژن جدید به لیست ورژن اضافه شده اما هرچی روش کلیک میکنم انتخاب نمیشه ورژنش تغییری نکرده و همون قبلیه…
    به نظر شما مشکل از کجاس؟؟؟؟
    ممنون

  7. اقای زمانی ، وقت بعد از چندین ساعت کار بر روی پروژه ، به سایتی مثل سایت شما و به فردی مثل شما که هدفش رشد روز افزون وب فارسی ست بر میخورم ، تمام خستگی هایم از تنم خارج می شود ، خیلی ممنونم آموزش کاملی بود .

  8. سلام
    تشکر از آموزشتون.
    من طبق روال و روش اول رفتم.
    و کامل مراحل رو انجام دادم و یه بار هم چک کردم(البته اون فایل هایی که دانلود کردم رو فقط نسخه 64ش رو کپی کردم چون دستگاهم 64 بیتی هست و وقتی اون یکی فایل رو کپی کردم تمام فایل هارو replace میکرد بخاطر همین فقط 64 رو نصب کردم)
    اما نسخه جدید توی لیست نسخه ها نیست، اون فایل phpForApache هم ایجاد شده ولی بازم مشکل هست…
    لطفا راهنمایی کنید باتشکر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *