মোড_রেইট পিএইচপি তে সক্ষম আছে কিনা তা কীভাবে পরীক্ষা করবেন?


149

আমি ভাবছিলাম যে অ্যাপাচি এবং আইআইএস-mod_rewriteসক্রিয় আছে কিনা তা পরীক্ষা করা সম্ভব কিনা ।PHP

আইআইএস-এর জন্য ModRewrite বিদ্যমান। এটি পরীক্ষা করে দেখুন here

সুতরাং, আমি একটি পিএইচপি স্ক্রিপ্ট সন্ধান করছি যা আপাচি এবং আইআইএস-mod_rewrite তে পরীক্ষা করে

কেউ কি এই জাতীয় স্ক্রিপ্ট জানেন বা একটি লিখতে পারেন?

বিশেষত মাইক্রোসফ্ট আইআইএস-এর জন্য

ধন্যবাদ!

উত্তর:


125

আপনি যদি mod_php ব্যবহার করেন তবে আপনি ব্যবহার করতে পারেন apache_get_modules()। এটি সমস্ত সক্ষম মডিউলগুলির একটি অ্যারে ফিরিয়ে দেবে, তাই mod_rewriteসক্ষম হয়েছে কিনা তা পরীক্ষা করতে আপনি কেবল এটি করতে পারেন

in_array('mod_rewrite', apache_get_modules());

দুর্ভাগ্যক্রমে, আপনি সম্ভবত সিজিআই দিয়ে এটি করার চেষ্টা করছেন যা এটি কিছুটা জটিল করে তোলে।

যদিও আপনি নিম্নলিখিতটি ব্যবহার করে এটি পরীক্ষা করতে পারেন

strpos(shell_exec('/usr/local/apache/bin/apachectl -l'), 'mod_rewrite') !== false

উপরের শর্তটি যদি মূল্যায়ন করে trueতবে mod_writeতা সক্ষম হয়।


1
আমি জানি না। মডিউল mod_rewriteইনস্টল করা হয়েছে কিনা এর জন্য এই পরীক্ষাগুলি । আপনি সম্ভবত যে আইআইএস মোড-পুনর্লিখনের মডিউলটি উল্লেখ করছেন এটি সম্পূর্ণ ভিন্ন এবং বাণিজ্যিক পণ্য - এটি অ্যাপাচি মডিউলের সাথে কোনও সম্পর্ক নেই, এটি সম্পূর্ণ ভিন্ন প্রশ্ন এবং এটি ব্যবহার করার অভিজ্ঞতা আমার নেই।
কেবি

এটি সত্য, সুতরাং কোনও সাধারণ স্ক্রিপ্ট সঠিকভাবে নেই?
টাইম

@ ডিসকর্ড তখন আমি অনুমান করছি আপনি এটি সিজিআইতে ব্যবহার করছেন।
কেবিআ

না, উত্তর এবং নীচের উত্তরের মতো এটি পিএইচপি স্ক্রিপ্টে ব্যবহার করা হয়েছিল। যদি (! ফাংশন_একটি ('অ্যাপাচি_জেট_মডিউলস')) p পিপিনফো (); মরা; server আমার সার্ভারে সর্বদা সত্য ...
DrCord

2
@ জিরিপ phpinfo()অনেক কিছুর জন্য দরকারী হতে পারে তবে আপনি যদি এমন কোনও সিস্টেম লিখতে চান যা mod_rewriteসক্ষম হয়ে থাকে বা অন্য কোনও আচরণে ফ্যালব্যাকস ব্যবহার করে তবে প্রোগ্রামিয়ালি এটি সনাক্ত করা কার্যকর।
কেবিএ

94

কোডটির এই অংশটি অনুলিপি করুন এবং এটি চালানোর জন্য চালান।


<?php
 if(!function_exists('apache_get_modules') ){ phpinfo(); exit; }
 $res = 'Module Unavailable';
 if(in_array('mod_rewrite',apache_get_modules())) 
 $res = 'Module Available';
?>
<html>
<head>
<title>A mod_rewrite availability check !</title></head>
<body>
<p><?php echo apache_get_version(),"</p><p>mod_rewrite $res"; ?></p>
</body>
</html>

আমার কাছে mod_php সক্ষম না থাকলে phpinfo আমাকেও বলবে?
ওভেন ম্যাকআলাক

2
হ্যাঁ আমরা অ্যাপ্পির সমস্ত "লোডেড মডিউল" phpinfo.php এ দেখতে পারি
মোহিনী

52

আমি খ্রিস্টান রায়ের সমাধানটি পছন্দ করি :

###  .htaccess

<IfModule mod_rewrite.c>

    # Tell PHP that the mod_rewrite module is ENABLED.
    SetEnv HTTP_MOD_REWRITE On

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # The rest of your rewrite rules here

</IfModule>

তারপরে, আপনি এর জন্য আপনার পিএইচপি কোডটি চেক করতে পারেন

    array_key_exists('HTTP_MOD_REWRITE', $_SERVER);

আইআইএস-এর সাথে এটিও কাজ করে কিনা ধারণা নেই (আমার কাছে চেক করার কোনও উপায় নেই) তবে প্রতিক্রিয়াগুলি ভাল।


4
একটি সঙ্গে <IfModule mod_env.c>এটি প্রায় নিখুঁত হবে। :)
রিবেইরোব্রেনো

এটি একটি খুব দরকারী এবং সহজ সমাধান এবং এটি পিএইচপি সিজিআই হিসাবে চলমান থাকলেও এটি কাজ করে
জোস বি

@ রিবিরোব্রেনো যেমন উল্লেখ করেছেন, <ifModule mod_env.c> সহ এটি প্রায় নিখুঁত হবে। এটি আমার পক্ষে নিখুঁতভাবে কাজ করেছে।
কাসেম

পিএইচপি যদি সিজিআই হিসাবে চলমান থাকে তবে এটি যাওয়ার উপায়। সুন্দর কাজ করে।
Wojciech Jakubas

35

এই কোড সহ তথ্য.এফপি নামে একটি ফাইল আপলোড করুন এবং এটি চালান:

<?php 
phpinfo();

পৃষ্ঠায় মোড_উইরাইট অনুসন্ধান করুন এবং দেখুন এটি লোড মডিউলগুলির অধীনে খুঁজে পেতে পারেন কিনা।


28

এটিকে এতটা কঠিন করবেন না যে আপনি কেবল সন্ধান করতে পারেন phpinfo();

এখানে চিত্র বর্ণনা লিখুন

আশা করি সহায়ক!

ধন্যবাদ


এটি আমার জন্য দ্রুত এবং সহজতম রুট ছিল, যেহেতু আমি ইতিমধ্যে কোনও phpinfo কল / ফাইল দিয়ে স্টাফ করছিলাম। ধন্যবাদ! :)
ব্রায়ান উ

@ লায়লা, আমি আমার মন্তব্য আপডেট করতে পারছি না, তাই আমি মুছে ফেলেছি, ধন্যবাদ
vanduc1102

11

কমান্ড লাইনের মাধ্যমে আমরা শতভাগে আমরা এটি করতে পারি

httpd -l

1
আর তুমি উবুন্টু উপর যদি: apache2 -l
youanden

2
বা উবান্টুতে অ্যাপাচিটেল
এম

এটি কেবলমাত্র এমন মডিউলগুলি দেখায় যা সংকলিত ছিল
জয়য়ার্জ

2
httpd -M লোড হওয়া স্ট্যাটিক এবং ভাগ করা মডিউলগুলির তালিকা প্রদর্শন করে।
জয়য়ারজো

7
<?php
phpinfo();
?>

লোডড মডিউল সারিতে অ্যাপাচি 2 হ্যান্ডলারের কনফিগারেশনের অধীনে দেখুন।

এটি সহজ এবং কাজ করে।

<?php foreach( apache_get_modules() as $module ) echo "$module<br />";  ?>

7

অ্যাপাচি এবং আইআইএস উভয়ের জন্যই মোড_আররাইট সক্ষম হয়েছে কিনা তা যাচাই করার এটি আমার বর্তমান পদ্ধতি

/**
 * --------------------------------------------------------------
 *  MOD REWRITE CHECK
 * --------------------------------------------------------------
 *                                        - By A H Abid
 * Define Constant for MOD REWRITE
 * 
 * Check if server allows MOD REWRITE. Checks for both 
 * Apache and IIS.
 * 
 */
if( function_exists('apache_get_modules') && in_array('mod_rewrite',apache_get_modules()) )
    $mod_rewrite = TRUE;
elseif( isset($_SERVER['IIS_UrlRewriteModule']) )
    $mod_rewrite = TRUE;
else
    $mod_rewrite = FALSE;
define('MOD_REWRITE', $mod_rewrite);

এটি আমার স্থানীয় মেশিনে কাজ করে এবং আমার আইআইএস ভিত্তিক ওয়েব হোস্টেও কাজ করে। তবে, একটি নির্দিষ্ট অ্যাপাচি সার্ভারে এটি অ্যাপাচি-তে কাজ করেনি কারণ অ্যাপাচি_গেট_মডিউলগুলি () অক্ষম করা হয়েছিল কিন্তু সেই সার্ভারে মোড_আররাইট সক্ষম ছিল।


3

আপনি ইনস্টল হওয়া অ্যাপাচি মডিউলগুলির একটি তালিকা পেতে পারেন এবং তার বিরুদ্ধে পরীক্ষা করতে পারেন। সম্ভবত আপনি এটি .dll (বা লিনাক্স সমতুল্য) ফাইল অনুসন্ধান করে এটি ইনস্টল করা হয়েছে কিনা তা পরীক্ষা করতে পারেন।


@ কেবিএ সিজিআই মোডে কীভাবে চেক করবেন।
রাভিসনি


1

আরও একটি পদ্ধতি মাধ্যমে exec()

exec('/usr/bin/httpd -M | find "rewrite_module"',$output);

যদি mod_rewriteলোড করা হয় তবে এটি আউটপুটে "rewrit_module" ফিরিয়ে দেবে।


0

আর একটি ধারণা, প্রকৃতপক্ষে আরও নোংরা হ্যাক, মোড পুনর্লিখন সম্পর্কিত সার্ভার নির্ভর একটি পিএইচপি সমস্যা নয়: কেন না, যদি আপনার সম্ভাবনা থাকে তবে একটি পরীক্ষা ডিরেক্টরি তৈরি করুন এটি টেস্ট.পিএফ-তে পুনরায় লেখার জন্য ডিরেক্টরিটি কল করুন, ডিরেক্টরিটি কল করুন HTTP- র মাধ্যমে এবং পরীক্ষা করুন।

সত্যিই, নোংরা।


0

এই ফাংশনটি ব্যবহার করুন:

function apache_module_exists($module)
{
    return in_array($module, apache_get_modules());
}

0

কোনও পরিচিত ফাইলটিতে পুনর্নির্দেশ করা এবং সেই পুনর্নির্দেশটি আসলে কার্লের সাথে কাজ করে কিনা তা যাচাই করবেন কীভাবে?


0

আইআইএস হেরোস এবং নায়িকাদের জন্য:

মোড_উইরাইট অনুসন্ধান করার দরকার নেই। কেবল পুনর্লিখন 2 মডিউল ইনস্টল করুন এবং তারপরে .htaccess ফাইলগুলি আমদানি করুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.