صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 13

موضوع: پیکربندی Php

  1. #1
    مدیر کل Vahid آواتار ها
    تاریخ عضویت
    Aug 2008
    نوشته ها
    2,724
    تشکر تشکر کرده 
    435
    تشکر تشکر شده 
    6,975
    تشکر شده در
    2,085 پست

    پیش فرض پیکربندی Php

    غیر فعال کردن دسترسی و اداره کردن فایل ها بصورت ریموت و URLs
    برای غیر فعال کردن این تابع از این تنظیم استفاده کنید :
    PHP کد:
    allow_url_fopen = Off

    برای محدود کردن بسیاری از حملات به برنامه های تحت وب میتوانید…

    ریجستر گلوبال رو غیر فعال کنید ، زیرا این تابع به حمل کننده اجازه میدهد تا آزادانه در بیشتر حالات از ضعف های برنامه نویسی استفاده کند ، فعال بودن این تابع ریسک بالایی برای سرور شماست و اگر برنامه ای تحت وب دارید به فعال بودن نیاز دارد و یا برنامه نویس های شما به فعال بودن اون احتیاج دارن بهتر است بیخیال اون ها بشید و بحرفشون گوش ندهید
    خوشبختانه این تابع در php نسخه های ۴/۲/۰ به بالا بصورت معمول غیر فعال می باشد.
    برای غیر فعال کردن این تابع از این تنظیم استفاده کنید :
    PHP کد:
    register_globals = Off

    یک راه حل برای فعال کردن این تابع در سرورهایی که غیر فعال کردن می باشد ، بدین صورت که در روت فولدر هاست مورد نظر میتوانید فایل .htaccess رو باز کرده و این دستورالعمل رو در سطر اول به آن اضافه کنید :
    PHP کد:
    php_flag register_globals on

    به قرار دادن این دستور در فایل .htaccess در فولدر روت توجه کنید.

    محدود و مشخص کردن آنچه که php می توانید read و write کند :
    در اغلب اوقات برنامه و اسکریپت های نوشته شده بزبان php احتیاج به دسترسی I/O به یک ساب فولدر ضروری در فایل سیستم دارد ، بعنوان مثال :
    PHP کد:
    /var/www/htdocs/files

    در این حالت شما میتوانید دسترسی هرچی که fopen و هر کدام از دیگر توابعی که میتوانند read و write کنند را محدود کنید :
    PHP کد:
    open_basedir = /var/www/htdocs/files

    حالت امن و یا Safe Mode :

    در این حالت دسترسی به فایل هایی که توسط آپاچی مدیریت نمیشن غیر فعال میشه و دسترسی به خیلی از متغیرها ، توابع و همچنین اجرای برنامه های باینری غیر فعال میشن.

    در حالت عادی safe mode برای برنامه نویسان و طراحان بسیار محدود کننده می باشد ، هرچند برای اینکه این حالت مورد پسند و در حالت دلخواه ما قرار گیرد راه متعددی وجود دارد. اما بزرگترین مشکل این حالت تنها بر میگردد به فایل هایی که توسط آپاچی مدیریت میشن، دارای دسترسی از طریق اسکریپت های بزبان php می باشند. شاید برنامه نویسان احتیاج به دسترسی به فایل هایی در محدوده مالکیت گروه های دیگر باشد و یا دسترسی به فایل هایی که توسط برنامه های دیگر بوجود می آیند باشد. در این حالت شما می توانید از تنظیم زیر برای انجام این دسترسی ها استفاده کنیذ :

    PHP کد:
    safe_mode = Off

    safe_mode_gid
    = On

    با فعال بودن safe_mode_gid بجای safe_mode ، پی اچ پی ( PHP ) قادر به دسترسی به فایل هایی می باشد که خارج از محدوده و مالکیت آپاچی می باشد. خوب ممکن هست خیلی از توسعه دهندگان ، برنامه نویسان همزمان بروی یک سرور مشغول بکار باشند شما میتوانید آنها رو به گروه آپاچی اضافه کنید و آنها رو گروه عادی نمایید و یا هرچیزی که باید ست بشه.

    safe_mode همچنین مفید برای جلوگیری از اجرای برنامه های باینری می باشد ، اما گاهی اوقات شما نیاز به اجرای برنامه های خاص دارید. در این حالت شما می توانید آنها را در یک دایرکتوری مانند /var/www/binaries قرار داده و از دستورالعمل زیر استفاده کنید :

    PHP کد:
    safe_mode_exec_dir = /var/www/binaries

    در نهایت ، جهت دسترسی به برخی متغییرها از تنظیمات زیر استفاده کنید ، بشرطی که توسط یک کاما از لیست پیشوند ها جدا شده باشد. تنها متغییرهایی که نام آنها با این پیشوندها شروع شود قادر به دسترسی می باشند :

    PHP کد:
    safe_mode_allowed_env_vars = PHP_

    87/07/15 - اعمال محدودیت ها :

    یکی از ایده های بسیار خوب همیشه محدود کردن مدت زمان اجراهای PHP ، مصرف حافظه، ارسال و آپلود دیتا بوده است.

    برای اعمال آنها دستورالعمل های زیر را انجام دهید :

    PHP کد:
    بیشترین مدت زمان اجرای اسکریپت ؛ max_execution_time = 30

    حداکثر زمان مصرف شده جهت تجزیه ورودی ؛ max_input_time
    = 60

    بیشترین مقدار استفاده یک اسکریپت از حافظه ؛ memory_limit
    = 16M

    بیشترین حجم مجاز برای آپلود ؛ upload_max_filesize
    = 2M

    حداکثر حجم ارسال ؛ post_max_size
    = 8M

    نکته : اصلاً نیازی به گفتن من نیست ، شما میبایست مقدار توابع بالا را بمیزان استفاده و کارائی مورد نیاز کم و زیاد کنید.

    محدود کردن دسترسی به فایلهای مشخص شده :

    خیلی از فایل های نمیبایستی که توسط کاربران شما مورد دسترسی قرار گیرند ، خیلی از توسعه دهندگان به این عامل نیاز دارند اما ، نکته مهم اینجاست که این فایل ها چون تحت نظارت و تجزیه و تحلیل موتور PHP قرار ندارند قابل دسترسی توسط دیگران خواهد بود و سورس فایلها براحتی قابل نمایش خواهد بود ، بطور مثال :

    PHP کد:
    http://www.example.com/includes/settings.inc

    خیلی از این فایل ها محتوی اطلاعات مهمی از قبیل پسورد MySQL و … می باشند ، برای همین شما می بایست مطمئن شوید تا کاربران به این فایل ها دسترسی ندارند. فایل هایی از این قبیل :

    PHP کد:
    .sql, .mysql, and .pgsql

    نمونه دیگر میتوان به فایل های بک آپ و یا پشتیبان اشاره کرد. خیلی از مشترکان از فایل ها و دیتابیس های خود پشتیبان تهیه کرده و آنها را در کنار فایل های اصلی و یا مسیری که قابل دسترسی می باشد قرار میدهند. بر فرض مثال اگر شما فایل index.php را ویرایش کنید فایل اصلی با نام index.php~ در کنار فایل ویرایش شده قرار میگیرد ، و چون با ~ تمام میشود دیگر تحت مدیریت و نظارت PHP نخواهد بود ! و اگر کاربری آنرا بشکل زیر فرا بخواند میتواند محتویات داخل آن را بسادگی مشاهده کند :

    PHP کد:
    http://www.example.com/index.php~

    برای دوری کردن از این ریسک ، شما میتوانید از این دستور العمل آپاچی استفاده کنید :

    میتوانید این دستور را داخل یک فایل .htaccess و یا در تنظیمات پیکربندی آپاچی قرار دهید. افزودن فایل فرمت های دیگر نیز بهمین شکل میسر می باشد.

    در قسمت بعدی راجع به پیغام های خطا و واقعه نگاری و اینکه چطور ساختار PHP را مخفی کنیم خواهم نوشت.
    برای پیش رفت در علم آسانسوری وجود ندارد پله ها را باید پیاده رفت /./ همیشه این یادتان باشد که دست بالای دست بسیار است.
    يادمان باشد براي يك بار ايستادن صد ها بار افتاده ايم /./ بک آپ مهمترین رمز موفقیت هاستینگ /./ امنیت مطلق نیست.
    ارتباط مستقیم با من :
    Admin -{(@)}- WebHostingTalk . ir

  2. تعداد تشکر ها ازVahid به دلیل پست مفید


  3. # ADS




     

  4. #2
    عضو جدید
    تاریخ عضویت
    Oct 2008
    نوشته ها
    23
    تشکر تشکر کرده 
    27
    تشکر تشکر شده 
    29
    تشکر شده در
    20 پست

    پیش فرض

    خیلی عالی دستتون درد نکنه
    اما اگر بتونین یک متن خوب میزان و عالی برای دیسیبل فانکشن بدید ممنون میشم

  5. تعداد تشکر ها ازssh به دلیل پست مفید


  6. #3
    مدیر کل Vahid آواتار ها
    تاریخ عضویت
    Aug 2008
    نوشته ها
    2,724
    تشکر تشکر کرده 
    435
    تشکر تشکر شده 
    6,975
    تشکر شده در
    2,085 پست

    پیش فرض

    یه فایل Php.ini کانفیگ شده از hostmonster
    اینو ببینید و تغیر اعمال کنید حتما درست میشه
    فایل های پیوست شده فایل های پیوست شده
    برای پیش رفت در علم آسانسوری وجود ندارد پله ها را باید پیاده رفت /./ همیشه این یادتان باشد که دست بالای دست بسیار است.
    يادمان باشد براي يك بار ايستادن صد ها بار افتاده ايم /./ بک آپ مهمترین رمز موفقیت هاستینگ /./ امنیت مطلق نیست.
    ارتباط مستقیم با من :
    Admin -{(@)}- WebHostingTalk . ir

  7. تعداد تشکر ها ازVahid به دلیل پست مفید


  8. #4
    عضو انجمن secure_host آواتار ها
    تاریخ عضویت
    Nov 2008
    نوشته ها
    586
    تشکر تشکر کرده 
    171
    تشکر تشکر شده 
    1,382
    تشکر شده در
    508 پست

    پیش فرض

    نقل قول نوشته اصلی توسط ssh نمایش پست ها
    خیلی عالی دستتون درد نکنه
    اما اگر بتونین یک متن خوب میزان و عالی برای دیسیبل فانکشن بدید ممنون میشم
    symlink,shell_exec,exec,proc_close,proc_open,popen ,system,dl,passthru,escapeshellarg,escapeshellcmd
    اينها function هايي هستند كه بايد حتما disable بشه
    function هاي ديگه اي هم هست كه باعث ميشه روت بده ولي اينها از همه مهمتره

  9. تعداد تشکر ها ازsecure_host به دلیل پست مفید


  10. #5
    عضو جدید DedicatedBOX آواتار ها
    تاریخ عضویت
    Aug 2008
    نوشته ها
    69
    تشکر تشکر کرده 
    49
    تشکر تشکر شده 
    109
    تشکر شده در
    62 پست

    پیش فرض

    اينها function هايي هستند كه بايد حتما disable بشه
    function هاي ديگه اي هم هست كه باعث ميشه روت بده ولي اينها از همه مهمتره
    از کی تا حالا با بستن 4 تا فانکشن میشه جلوگیری کرد از روت کردن؟
    ????

  11. تعداد تشکر ها از DedicatedBOX به دلیل پست مفید


  12. #6
    عضو جدید DedicatedBOX آواتار ها
    تاریخ عضویت
    Aug 2008
    نوشته ها
    69
    تشکر تشکر کرده 
    49
    تشکر تشکر شده 
    109
    تشکر شده در
    62 پست

    پیش فرض

    PHP براي تنظيم عمليات و وظايف مختلفي را كه بر روي سرور اعمال مي نمايد را در فايل با عنوان PHP.ini ذخيره مي نمايد و اين امكان را به برنامه نويس مي دهد تا به تغيير اين فايل بتواند سرور خود را براساس نياز خود مديريت نمايد.


    شما مي توانيد اين فايل را به راحتي در مسير نصب PHP پيدا نماييد.
    در اين قسمت ما مي خواهيم براي شما بعضي پيكر بندي مفيد و مواردي را كه بيشتر مورد استفاده قرار مي گيرد را براي شما توضيح دهيم كه مي توان به شرح زير بيان نمود:
    1.register_globals
    2.error_reporting and display_errors
    3.extension and extension_path
    4.session.save_path
    5.max_execution_time

    register_globals
    قبل از PHP 4.2.0 اين مقادير بصورت پيش فرض فعال (ON) بودند ولي بعد از اين نسخه اين مقادير بصورت غير فعال تبديل كردند. دليل اين تغيير آن بودكه با فعال بودن اين گزينه امنيت كدها كاهش مي يافت . و بهمين دليل مطمئن شويد در فايل PHP.ini مقدار off باشد.

    error_reporting and display_errors
    هنگام كد نويسي پيشنهاد مي شود مقدار error_reporting = E_ALL تبديل نماييد و بعد از پايان كدنويسي مقدار آنرا به error_reporting = E_NONE تغيير دهيد.
    دليل اينكه E_ALL در حين برنامه نويسي بايد قرار داشته باشد اين است كه مي تواند برنامه نويس اشكالات و خطاهاي بيشتري از كدهاي خود بگيرد و در پايان برنامه نويسي كه نمي خواهيم خطاهاي ما لو برود و باعث آبروريزي نشود آنرا بصورت E_NONE تبديل مي كنيم.

    extension and extension_path
    با آمدن PHP 4 51 فرمت جديد از قبيل كتابخانه GD (براي ساخت گرافيك و دستكاري آن)، CURL ، پشتيباني ازPostgreSQL و غيره اضافه گرديد. اين فرمتها بصورت اتوماتيكي غيرفعال مي باشند.
    مقدار extension_path بايد مسير فولدر extension از جايي كه PHP نصب شده است يعني PHP_INSTALL_DIR/extensions بايد قرار گيرد ( PHP_INSTALL_DIR همان مسير نصب PHP است) مثلا PHP در مسير C:\Program Files\Apache Group\Apache2\php نصب شده است، بنابراين مسير فولدر extension بصورت زير است:
    extension_path = C:/Program Files/Apache Group/Apache2/php/extensions/
    فراموش نكنيد كه حتما يك اسلش ( / ) در آخر آن قرار دهيد كه در غير اينصورت كار نخواهد كرد.
    بعد از مشخص كردن مسير، شما بايد extension_path را از حالت توضيح خارج نماييد. در PHP.ini براي نمايش توضيح از علامت سمي كالن ( ; ) استفاده مي شود. براي مثال اگر شما مي خواهيد از كتابخانه GD استفاده نماييد ، شما بايد سمي كالن از ابتداي خط ;extension=php_gd2.dll حذف نماييد و آنرا بصورت extension=php_gd2.dll در آوريد.

    session.save_path
    يكي از تنظيمات PHP براي ذخيره session ها، تنظيم مسير آنها مي باشد، كه در صورت مشخص نشدن اين مسير، sessionها بدرستي عمل نخواهند كرد. براي تنظيم اين مسير در ويندوز شما مي توانيد مسير آنرا بصورت زير قرار دهيد:
    c:/windows/temp/

    max_execution_time
    بصورت پيش فرض مقدار اين ثابت، بر روي 30 (ثانيه) تنظيم شده است. اما براي بعضي اسكريپتها اين زمان كافي نيست و احتياج به زمان بيشتري دارد و در بعضي مواقع به زمان كمتري احتياج مي باشد. براي مثال براي كدهاي پشتيبان گيري از بانك اطلاعاتي، ممكن است احتياج به زمان بيشتر براي ذخيره بانك اطلاعاتي حجيم دارد.
    اگر شما فكر مي كنيد كه اسكريپت شما نياز به زمان بيشتري دارد، شما مي توانيد براي مثال آنرا به حداكثر زمان يعني 900 ثانيه (15 دقيقه) تنظيم نماييد و آنرا بدين صورت تغيير دهيد:
    max_execution_time = 900
    PHP توابعي راحت و آساني براي تغيير دادن پيكربندي PHP در زمان اجرا دارد، كه مي توان به ini_set() اشاره كرد. توجه داشته باشيد اين تابع فقط در زماني كه اسكريپت شما در حال اجرا است قابل تغيير است و نمي تواند پيكريندي را بصورت دائمي تغيير دهد.
    ????

  13. تعداد تشکر ها ازDedicatedBOX به دلیل پست مفید


  14. #7
    عضو جدید DedicatedBOX آواتار ها
    تاریخ عضویت
    Aug 2008
    نوشته ها
    69
    تشکر تشکر کرده 
    49
    تشکر تشکر شده 
    109
    تشکر شده در
    62 پست

    پیش فرض

    فايل پيکربندي PHP
    قبل از شروع مطالب نگاهي اجمالي به ويژگيهاي فايل پيکربندي PHP منطقي به نظر مي رسد. نام اين فايل php.ini مي باشد و به دلايلي از ساختار کلي فايلهاي ini که بيشتر در برنامه هاي کاربردي ويندوز استفاده مي شود، پيروي مي کند. اين فايل متني به صورت ASCII مي باشد که به بخشهايي (session) تقسيم مي شود. هر بخش متغيرهايي را که مربوط به آن بخش مي شوند، در بر مي گيرد. هر بخش چيزي شبيه زير مي باشد:

    [MySection]
    variable=\"value\"
    anothervariable=\"anothervalue\"


    نام بخش در يک جفت براکت"[]" در بالا قرار مي گيرد. و زير آن در هر سطر يک متغير با مقدارش قرار مي گيرد. متغيرها به حروف حساس (case sensitive) هستند و نمي توانند شامل فاصله (space) باشند، در حالي که مقادير متناظر آنها مي توانند اعداد، رشته کاراکتري (string) و يا Boolean باشند.

    سمي کالن ";" در ابتداي هر سطر به عنوان نشانگر درج توضيحات (comment) مي باشد. اين راهي ساده براي فعال يا غيرفعال کردن ويژگيهاي PHP مي باشد، به جاي حذف کردن يک سطر مي توانيد به اين روش آن را به توضيح تبديل کرده که در پردازش فايل ها شرکت نخواهد کرد. در صورتي که فکر مي کنيد ممکن است بعد ها بخواهيد از ويژگي که اکنون به کارتان نمي آيد، استفاده کنيد بهتر است آن را پاک نکنيد.

    براي اينکه PHP بتواند فايل php.ini را تشخيص بدهد بايد آن را در دايرکتوري جاري، دايرکتوري که در متغير $PHPRC تعريف شده، يا دايرکتوري که هنگام کامپايل مشخص شده است(براي ويندوز اين همان دايرکتوري اصلي PHP است) نگهداريد.

    بعد از اينکه شما تغييراتي در فايل php.ini داديد براي آنکه تغييرات اعمال شوند بايد سرور خود را مجددا راه اندازي نماييد (سرور را restart کنيد). البته فرض بر اين است که شما قبلا در حال استفاده PHP بر سرور خود بوده ايد. براي استفاده هاي command-line از PHP فايل پيکربندي php.ini در هرباري که برنامه PHP احضار مي شود خوانده و چک مي شود.


    تنظيم ويژگيهاي مفسر
    اولين مرحله در اين مقاله از مهمترين گامهاي آن مي باشد، ويژگيهايي که به مفسر زبان PHP مربوط مي شود. اولين مورد در اينجا engine variable مي باشد که چک مي کند که PHP engine بايد فعال "on" يا غير فعال "off" باشد. Off کردن اين متغير به معني اين است که کدهاي PHP توسط سرور تفسير نشوند.معمولاً نيازي به اين تغيير حس نمي شود، پس اين متغير را به صورت on رها کنيد.

    engine=On


    متغير short_open_tag کنترل مي کند که آيا مفسر بايد تگهاي کوتاه را همانند تگ استاندارد تشخيص دهد يا نه.در صورتي که تشخيص مي دهيد اين نمونه تگها باعث ناسازگاري با ديگر زبانها مي شوند يا اينکه تصميم به استفاده از قوانين syntax مختص PHP داريد مي توانيد آن را off کنيد.

    short_open_tag = On


    معمولاً session, cookie و اطلاعات HTTP header در يک اسکريپت PHP بايد قبل از توليد هرگونه خروجي توسط آن اسکريپت فرستاده شوند. در صورتي که اين در برنامه شما امکان پذير نيست مي توانيد هر چه را که PHP به نام output buffering مي شناسد، توسط متغيرهاي output_buffering فعال کنيد.

    با on بودن output buffering، زبان PHP خروجي اسکريپت شما را در يک بافر مخصوص نگه مي دارد و هنگامي آنها را مي فرستد که به طور مشخص به آن دستور داده شود. اين به شما امکان مي دهد که cookieها يا اطلاعات HTTP header را از وسط يا انتهاي کد اسکريپت خود بفرستيد. هرچند اين مي تواند کارآيي را در حاشيه کاهش دهد.

    output_buffering = Off


    شما مي توانيد با يک عدد به عنوان مقدار براي متغير output_buffering اندازه بافر را تعيين کنيد.

    output_buffering = 2048


    هنگامي که PHP شروع به کار مي کند يک پيام حاوي شماره نسخه خود به هدر استاندارد سرور مي افزايد.براي غيرفعال کردن آن مي توانيد متغير expose_PHP را off کنيد.اين مي تواند مفيد باشد، مثلا اگر بخواهيد امکانات وب سرور خود را از ديد هکرها پنهان کنيد.

    expose_PHP = On



    تنظيم مسير جستجوي
    شما مي توانيد مسير جستجويي را براي PHP با تنظيم متغير include_patch که ليستي از مسيرها را مي پذيرد، مشخص کنيد. PHP هنگامي که با فايلي که مسير آن مشخص نشده است ، مواجه مي شود به طور اتوماتيک اين مسيرها را چک مي کند.
    اگر شما کتابخانه اي از توابع يا مجموعه اي از کلاسها داريد که زياد از آنها استفاده مي کنيد مي توانيد دايرکتوري موقعيت آنها را در اين متغير قرار دهيد. همچنين اين متغير مکان مناسبي براي اضافه کردن دايرکتوري PEAR خود PHP مي باشد، که مجموعه اي از کلاسهايي که بسيار استفاده مي شوند را شامل مي شود.

    include_path = \".:/usr/local/lib/php/pear:\"


    کاربران ويندوز براي مشخص کردن چندين دايرکتوري بايد از سمي کالن";" بين آنها استفاده کنند و کاربران unix از کالن ":".

    دو متغير جالب در اين زمينه auto_prepend_file و auto_append_file مي باشند. اين متغيرها فايلهايي را مشخص مي کنند که PHP به ابتدا يا انتهاي هر سند PHP اضافه خواهد کرد. اين مورد بيشتر براي اضافه کردن header و footer به صفحاتي است که توسط PHP ايجاد مي شوند، به طوري که باعث مي شود تعدادي خط کد به هر سند PHP که شما مي نويسيد اضافه گردد.
    اين فايلها هم مي توانند اسکريپتهاي PHP و هم html معمولي باشند، ولي کدهاي PHP براي اين امر بايد در تگ استاندارد محصور شده باشند.

    auto_prepend_file = /home/web/includes/header.php
    auto_append_file = /home/web/includes/legal.php



    چگونگي رفتار با خطاها
    خطا ها در PHP در چهار دسته مي آيند: parsing errors يا خطاي زمان تجزيه (کامپايل)، تذکرات درمورد خطاهاي موجود در کد مثلا مقدار دهي نکردن يک متغير، warning يا هشدار و fatal error. معمولا هنگامي که PHP با يکي از خطاهاي parsing error يا warning يا fatal error مواجه مي شود، خطاها را نمايش مي دهد و اگر خطا از نوع fatal error باشد اجراي اسکريپت را در همان نقطه متوقف مي کند. شما مي توانيد اين رفتار را با متغير error_reporting که چند فيلد خطا را مي گيرد و تنها خطاهايي را که با آنها سازگار باشند نمايش مي دهد، اصلاح کنيد.

    error_reporting = E_ALL


    براي غير فعال کردن نمايش خطاها مقدار متغير display_errors را به نادرست تغيير دهيد و به جاي آن پيام خطاها را در ثبات خطاها از طريق متغير log_errors بنويسيد.
    انجام اين کار براي امنيت بيشتر مفيد است، با غيرفعال کردن نمايش خطا شما اطلاعات ويژه سيستم خود را مخفي مي کنيد بدون توجه به اينکه آيا کاربران قصد خراب کردن سايت شما را دارند يا فقط استفاده مي کنند.به جاي آن شما بايد خطاها را در يک فايل دلخواه يا ثبات خطاي سيستم (system logger)، با تنظيم مقدار متغير error_log به مسير فايل انتخابي يا مقدار پيش فرض "syslog"، ثبت کنيد. فقط به ياد داشته باشيد که مرتبا به اين فايل سربزنيد تا ببينيد که در برنامه شما چه خطاهايي وجود دارد.

    display_errors = Off
    log_errors = On
    error_log = \"error.log\"



    فعال کردن توسعه ها
    توسعه هاي متعددي براي PHP موجود است. در سيستمهاي يونيکس لازم است که اين توسعه ها در زمان کامپايل ساخته شوند. در ويندوز، dll هاي باينري وجود دارند که بايد ضميمه شوند. متغير extension_dir محتوي نام شاخه اي است که PHP در آن به دنبال اين توسعه ها مي گردد. مثلا:

    extension_dir = \"C:\Program Files\Internet Tools\Apache\bin\php4\extensions\"


    نسخه ويندوز PHP به همراه ۲۰ توسعه منتشر مي شود که تمامي آنها در فايل php.ini ليست شده اند. براي فعال کردن هر توسعه، علامت سمي کالن جلوي آن را حذف کرده و سرور خود را از نو راه اندازي کنيد. براي غير فعال کردن يک توسعه نيز مي توانيد جلوي آن علامت سمي کالن رو اضافه کنيد.

    اگر توسعه مورد نظرتان در ليست توسعه ها در فايل php.ini نيست از متغير extension استفاده کرده و نام dll مورد نظر را به آن نسبت دهيد. مثلا:

    extension=php_domxml.dll
    extension=php_dbase.dll



    تنظيم متغيرهاي مربوط به توسعه ها
    متغير هاي مربوط به توسعه ها، در بخش جداگانه اي از فايل پيکربندي (php.ini) ذخيره مي شوند. براي مثال تمام متغيرهايي که به توسعه هاي MySQL مربوط مي شوند بايد در قسمت [MySQL] در فايل php.ini، قرار بگيرند.

    اگر قصد استفاده از تابع mail در PHP را داريد، 3 متغير وجود دارد که بايد آنها را تنظيم کنيد. متغيرهاي SMTP و sendmail_from (در ويندوز) يا sendmail_path (در يونيکس) در هنگام ارسال e-mail از طريق تابع mail مورد استفاده قرار مي گيرند. در ويندوز اين متغير ها براي تنظيم SMTP Server و همچنين براي تعيين آدرس From در ساختار e-mail به کار مي روند. در يونيکس متغير sendmail_path مسير MTA يا Mail Transfer Agent را براي ارسال mail تنظيم مي کند.

    SMTP = myserver.localnet.com
    sendmail_from = me@localhost.com
    sendmail_path = /usr/sbin/sendmail


    متغيرهاي java.class.path ، java.home، java.library و java.library.path همگي آدرس کلاس ها و کتابخانه هاي جاوا را تنظيم ميکنند. اين مقادير به وسيله توسعه هاي جاوا مورد استفاده قرار مي گيرند. بنابراين اگر مي خواهيد PHP بتواند ارتباط صحيحي با برنامه هاي جاواي شما برقرار کند از درستي و معتبر بودن مقادير اين متغير ها اطمينان حاصل کنيد.

    java.class.path = .\php_java.jar
    java.home = c:\jdk
    java.library = c:\jdk\jre\bin\hotspot\jvm.dll
    java.library.path = .\


    متغير session.save_path مشخص کننده آدرس شاخه موقتي است که براي ذخيره اطلاعات session ها بکار مي رود. معمولا اين متغير به طور پيش فرض مقدار /tmp را دارد، اما از آنجا که اين شاخه در ويندوز وجود ندارد بايد آن را با آدرس درست شاخه موقت ويندوز تصحيح کنيد در غير اين صورت هنگام فراخواني دستور session_start با خطا مواجه مي شويد. همچنين مي توانيد با تنظيم متغير session.cookie_lifetime مدت اعتبار cookie هاي session را بر حسب ثانيه مشخص کنيد.

    session.save_path = c:\windows\temp
    session.cookie_lifetime = 1800



    تنظيمات مربوط به امنيت
    تعدادي متغير در php.ini وجود دارد که به امنيت PHP نصب شده بر روي سيستم شما مريوط مي شوند. مهمترين آنها متغير safe_mode مي باشد که به طور مثال استفاده از آن براي محدود کردن آنچه کاربر مي تواند از طريق PHP انجام دهد بهISP ها توصيه ميشود.

    safe_mode = Off


    اگر safe mode فعال باشد (safe_mode = on) مي توانيد با تنظيم متغير safe_mode_include_dir مشخص کنيد که کدام شاخه ها براي فايل ها مورد جستجو قرار بگيرند. همچنين ميتوانيد نوع برنامه هايي که کدهاي PHP مي توانند از طريق فرمان exec آنها را اجرا کنند، را محدود کنيد. بدين منظور بايد اين برنامه هاي مجاز را در يک شاخه مخصوص قرار دهيد و از طريق متغير safe_mode_include_dir به PHP بگوييد که تنها در آن شاخه به دنبال آنها بگردد.بدين ترتيب تنها برنامه هاي درون اين شاخه توسط فرمان exec قابل دسترس خواهند بود.

    safe_mode_include_dir = /usr/local/lib/php/safe-include
    safe_mode_exec_dir = /usr/local/lib/php/safe-bin
    ????

  15. تعداد تشکر ها ازDedicatedBOX به دلیل پست مفید


  16. #8
    عضو جدید DedicatedBOX آواتار ها
    تاریخ عضویت
    Aug 2008
    نوشته ها
    69
    تشکر تشکر کرده 
    49
    تشکر تشکر شده 
    109
    تشکر شده در
    62 پست

    پیش فرض

    قسمت2

    شما مي توانيد اعمال مربوط به فايل ها را از طريق متغير open_basedir محدود کنيد. آدرس نسبت داده شده به اين متغير به عنوان ريشه اصلي (root) براي اعمال مربوط به فايل ها به کار مي رود. وقتي که اين متغير مقدار مي گيرد فايلهايي که در ساختار درختي اين ريشه نباشند براي PHP غير قابل دسترس خواهند بود. اين روش مناسبي براي محدود کردن کاربران يک سيستم اشتراکي مي باشد تا آنها تنها به آدرسهاي مربوط به خودشان دسترسي داشته باشند.

    open_basedir = /home/web/


    متغير max_execution_time تعيين ميکند که PHP حداکثر چند ثانيه منتظر پايان يافتن يک کد باشد قبل از آنکه به اجبار آن را خاتمه دهد. وقتي کد شما گرفتار حلقه هاي بينهايت ميشود اين متغير بکار مي آيد.اگر چه ممکن است اين موضوع گاهي مزاحمت ايجاد کند مثلا زماني که کد نوشته شده نياز به انجام اعمال زمانبري دارد، مثلا upload کردن يک فايل حجيم. در اين مواقع بايد مواظب باشيد که اين مقدار را افزايش دهيد تا مانع آن شويد که PHP اجراي کد شما را در وسط يک کار مهم خاتمه دهد.

    max_execution_time = 90



    تنظيمات مربوط به upload فايل ها و متغير هاي فرمها
    اگر پيکربندي هاي امنيتي که تاکنون ذکر شد کافي نيست باز هم مي توانيد با غير فعال کردن قابليت upload فايل از طريق متغير file_uploads، يا با محدود کردن حداکثر حجم قابل upload از طريق متغير upload_max_filesize سيستم خود را از اين هم امن تر کنيد. اغلب تمايل خواهيد داشت که فضاي کوچکي را براي upload فايلها اختصاص دهيد مگر اينکه برنامه اي داشته باشيد که قرار باشد فايل هايي نظير يک گالري عکس يا يک FTP Service را پذيرا باشد.

    file_uploads = On
    upload_max_filesize = 2M


    اگر تمايلي به upload کردن فايلها نداريد اما از تعداد زيادي فرم در صفحات PHP تان استفاده ميکنيد، 2 متغير ديگر وجود دارد که بايد برايتان جالب باشد. اول متغير register_globals، علت بيشترين سردردهاي برنامه نويسان با سابقهPHP در PHP 3.x اين متغير به طور پيش فرض فعال بود (on) که موجب ميشد وقتي يک فرم submit مي شد متغيرهاي آن بطور اتوماتيک به متغيرهاي PHP تبديل شوند.
    مسايل امنيتي موجب شد که در PHP 4.x اين متغير بطور پيش فرض غير فعال باشد. (off). در نتيجه متغيرهاي فرم تنها به کمک آرايه هاي ويژه $_GET و $_POST قابل دسترس باشند. اين امر خيلي از کدهاي نوشته شده با PHP 3.x را با مشکل مواجه ساخت. مثلا مقداري که در يک فيلد وارد شده بود در PHP 3.x با $email قابل دسترس بود در حالي که در PHP 4.x با $_POST[email] يا $_GET[email] ميتوان به آن رجوع کرد.
    ميتوانيد اين متغير را غير فعال کنيد (off) تا امنيت بيشتري را در برابر حملاتي که از طريق فرمها صورت مي گيرند برقرار کنيد. به منظور سازگاري با کدهاي نوشته شده با PHP 3.x آن را فعال کنيد:

    register_globals = on


    متغير ديگري که به کار با فرم ها مربوط ميشود post_max_size است که کنترل مي کند حداکثر چه حجم داده اي توسط متد POST يک فرم پذيرفته شود. به نظر نمي آيد که زماني لازم شود اين مقدار را از 8 MB افزايش دهيد. در عوض احتمال دارد بخواهيد آن را به يک مقدار واقعي تر تغيير دهيد. به هر حال اگر قصد داريد از امکانات upload فايل در PHP استفاده کنيد اين مقدار را بيشتر از مقدار متغير upload_max_size قرار دهيد.

    post_max_size = 8M


    يک متغير جديد هم در PHP 5 معرفي شده است: max_input_time. که حداکثر زمان بر حسب ثانيه که عمل دريافت داده هاي ورودي از طريق POST ،GET و PUT مي تواند طول بکشد را مشخص مي کند. اگر برنامه شما تحت يک اتصال کند اجرا مي شود بهتر است اين مقدار را افزايش دهيد تا به برنامه اجازه دهيد مدت بيشتري را به دريافت داده هاي ورودي اختصاص دهد.

    max_input_time = 90



    افزايش کارآيي
    هنوز مقادير ديگري هم وجود دارد که با دستکاري آنها مي توانيد کارايي مفسر PHP را بالا ببريد. به منظور جلوگيري از اجراي کدهايي که ممکن است تمام حافظه موجود سيستم را اشغال کنند، PHP به شما اجازه مي دهد که براي استفاده از حافظه محدوديتي معين کنيد. اين کار از طريق متغير memory_limit قابل انجام است که حداکثر ميزان حافظه قابل استفاده توسط يک برنامه واحد را مشخص مي کند.

    memory_limit = 8M


    مقدار متغير memory_limit اغلب بايد از مقدار متغير post_max_size بيشتر باشد.
    مساله ديگري که با دانستن آن مي توانيد کارايي را افزايش دهيد غير فعال کردن متغيرهاي $argc و $argv است که تعداد و محتواي آرگومان هاي خط فرمان که به يک برنامه ارسال شده اند، را مشخص مي کنند.

    register_argc_argv = false


    همينطور غير فعال کردن آرايه هاي $HTTP_GET_VARS , $HTTP_POST_VARS . چرا که به احتمال زياد در دنياي جديد $_GET , $_POST ديگر نيازي به آنها نيست. غير فعال کردن اين اجزا باعث بهبود کارآيي مي شود البته فقط در PHP 5 و از طريق متغيرregister_long_arrays قابل انجام است.

    register_long_arrays = false



    تابع ini_set
    و در آخر نکاتي در مورد تابع ini_set. در حالي کهPHP تمام تنظيمات اش را در هنگام بالا آمدن، از فايل php.ini مي خواند، اين اجازه را به شما مي دهد که اين تنظيمات را به کمک تابع جالب ini_set و در برنامه خود انجام دهيد. البته اين تغييرات فقط براي همان برنامه اي که در آن از تابع ini_set استفاده کرده ايد اعمال مي شوند .اين تابع 2 آرگومان مي گيرد: نام متغير پيکربندي اي که مي خواهيد مقدارش را تغيير دهيد و مقدار جديد آن. اين هم يک مثال که حداکثر زمان اجراي مجاز براي برنامه اي که اين کد در داخل آن نوشته شده است را افزايش مي دهد.

    <?php

    ini_set('max_execution_time', 600);

    // more code

    ?>


    باز هم يادآوري مي شود که اين تنظيمات در داخل هر برنامه اي که نوشته شود فقط همان برنامه را تحت الشعاع قرار مي دهد. وقتي که برنامه خاتمه پيدا کند مقدار متغير به طور اتوماتيک به مقدار اوليه تغيير خواهد کرد.

    اگر برنامه هايPHP شما بر روي يک سرور مشترک (Shared Server) اجرا مي شوند احتمالا شما دسترسي به فايل پيکربندي php.ini نخواهيد داشت. در اين موارد تابع ini_set کمک شاياني مي کند. چرا که اجازه مي دهد تنظيمات مورد نظرتان را براي برنامه هاي خودتان اعمال کنيد.
    ????

  17. تعداد تشکر ها ازDedicatedBOX به دلیل پست مفید


  18. #9
    عضو جدید DedicatedBOX آواتار ها
    تاریخ عضویت
    Aug 2008
    نوشته ها
    69
    تشکر تشکر کرده 
    49
    تشکر تشکر شده 
    109
    تشکر شده در
    62 پست
    ????

  19. تعداد تشکر ها از DedicatedBOX به دلیل پست مفید


  20. #10
    مدیر کل Vahid آواتار ها
    تاریخ عضویت
    Aug 2008
    نوشته ها
    2,724
    تشکر تشکر کرده 
    435
    تشکر تشکر شده 
    6,975
    تشکر شده در
    2,085 پست

    پیش فرض

    فکر کنم منابع هم بگی بد نباشه
    برای پیش رفت در علم آسانسوری وجود ندارد پله ها را باید پیاده رفت /./ همیشه این یادتان باشد که دست بالای دست بسیار است.
    يادمان باشد براي يك بار ايستادن صد ها بار افتاده ايم /./ بک آپ مهمترین رمز موفقیت هاستینگ /./ امنیت مطلق نیست.
    ارتباط مستقیم با من :
    Admin -{(@)}- WebHostingTalk . ir

  21. تعداد تشکر ها از Vahid به دلیل پست مفید


صفحه 1 از 2 12 آخرینآخرین

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 0
    آخرين نوشته: March 21st, 2018, 13:38
  2. پاسخ ها: 0
    آخرين نوشته: September 3rd, 2016, 14:46
  3. درخوایت سرور مجازی با پینگ پایین + ip تست پینگ
    توسط alivw71 در انجمن درخواست سرور مجازی
    پاسخ ها: 22
    آخرين نوشته: January 18th, 2014, 23:07
  4. مشکل invalid host name هنگام تست پینگ در سایت پینگدام
    توسط trrxreza در انجمن سوالات و مشکلات
    پاسخ ها: 5
    آخرين نوشته: October 10th, 2013, 09:34

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •