স্ক্রিপ্ট কার্যকর করার আগে আমি কী বিশ্বব্যাপী $ _SERVER ['REDIRECT_URL'] সেট করতে পারি?


8

আমি পুরানো থেকে নতুন সার্ভার কনফিগারেশনে অনেকগুলি সাইট স্থানান্তর করার প্রক্রিয়াধীন। প্রতিটি সাইট Mod_rewrite ইউআরএল ব্যবহার করে একটি অনুরূপ (তবে দু: খজনকভাবে অভিন্ন নয়) কোডবেসের উপর ভিত্তি করে।

  • উবুন্টু 8.04 এলটিএস => উবুন্টু 12.04 এলটিএস
  • অ্যাপাচি 2.22.8 => অ্যাপাচি 2.2.22
  • পিএইচপি 5.2 (ফাস্টসিজিআই) => পিএইচপি 5.3 (পিএইচপি 5-এফপিএম)

বেশিরভাগ ক্ষেত্রে কবজির মতো কাজ করা, তবে নতুন কনফিগারেশনে $ _SERVER ['REDIRECT_URL'] আর সেট করা নেই এবং এই বিশ্বব্যাপী ভেরিয়েবলের উপর নির্ভরতার কারণে কোডটি ব্যর্থ হচ্ছে।

আমি যা বুঝি সেগুলি থেকে, যখন এই পুনর্নির্দেশ ঘটে তখন এই পরিবর্তনশীলটি অ্যাপাচি দ্বারা সেট হয়ে যায়। স্পষ্টতই এখন এটি ঘটছে না, তবে কারণ খুঁজে পেতে আমি লড়াই করছি।

  • এটি কি আপাচি আপগ্রেড, বা (আমার অনুমান) পিএইচপি ফাস্টসিজিআই থেকে পিএইচপি 5-এফপিএম-এ স্যুইচ?
  • আমি এই পরিবর্তনশীলটি কীভাবে ফিরে পাব?

আমাকে প্রতিটি সাইটে কোডটি সম্পাদনা করার দরকার নেই, তাই আমি প্রয়োজনে একটি গ্লোবাল পিএইচপি অটো_প্রেপেন্ড সেট করব, তবে আদর্শভাবে আমি সার্ভার কনফিগারেশনটি ঠিক করতে এবং এই সেটটি প্রথম স্থানে রাখতে চাই।

সম্ভাব্য সম্পর্কিত: আমার কাছে এখন নতুন $ _SERVER ভেরিয়েবলগুলি রয়েছে, নামগুলি REDIRECT_SCRIPT_URL এবং REDIRECT_REDIRECT_SCRIPT_URL। এগুলিতে আমি REDIRECT_URL- এর জন্য সঠিক তথ্য চাইছি বলে মনে হয়, তবে এটি এমন দুটি অভ্যন্তরীণ পুনঃনির্দেশগুলি ঘটেছে যা আগে ছিল না তা বোঝায় - Google REDIRECT_REDIRECT_SCRIPT_URL অনুসন্ধান করে কেবল এলোমেলো var_dump আউটপুট দেয়। SCRIPT_URL নতুন REDIRECT_URL?

সম্পাদনা 1

আবার চেক করা REDIRECT_URL সেট (এখন) সেট করা হয়েছে, তবে সর্বদা প্রত্যাশিত টাইপ করা URL এর পরিবর্তে 'index.php' (mod_rewrite টার্গেট) এ। প্রয়োজনীয় ভেরিয়েবলটি ম্যানুয়ালি সেট করতে আমি কোনও পিএইচপি অটো_প্রেপেন্ড_ফিল ব্যবহার করেছি।

আমি নিশ্চিত না যে আমি প্রথমবারের মতো এটি কীভাবে মিস করেছি তবে আমি এর মধ্যে বেশ কয়েকটি পরিবর্তন করেছি যাতে আমি মনে করি বাইরের সুযোগটি সেখানে ছিল না। এটি যদি কাউকে বিভ্রান্ত করে তবে ক্ষমা চাই।

সম্পাদনা 2

নীচে ত্রুটিযুক্ত ডকুমেন্টের উল্লেখগুলিকে সম্বোধন করতে, ব্যবহারের মোড_আরাইট রুলটি হ'ল:

RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]

$ _GET ['url'] ভেরিয়েবল সেট করা আছে, সুতরাং নিয়মটি অবশ্যই কাজ করবে।

পরিষ্কার হয়ে উঠতে, এই পর্যায়ে আমি প্রথম দিকে উল্লিখিত অটো_প্রেডপেন্ডেল_ফাইলে কাজ করেছি।


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

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

আপনি যদি আমাদের এই বিষয়গুলি সামনে তুলে ধরে থাকেন তবে এটি সত্যই আপনার এবং আমাদের সেরা স্বার্থ উভয়ের মধ্যে। আমি আমার ভোট বিপরীত করেছি।
জন গার্ডেনিয়ার্স

আপনি আমাদের আগের এবং নতুন সার্ভার কনফিগারেশন আরও তথ্য দিতে পারেন? আমার মনে হয় পিএইচপি-তে REDIRECT_URL এর সেটিংটি SCRT_URL এনভায়রনমেন্ট ভেরিয়েবল থেকে আসে, আমার মনে হয়, তবে এমন অনেকগুলি জিনিস রয়েছে যা এই আমদানির আচরণটি সংশোধন করতে পারে (যেমন, suPHP, মোড়ানো ইঞ্জিন, অ্যাডটাইপহ্যান্ডলার বিবৃতি ইত্যাদি)।
জন ক্লসকে

উত্তর:


3

REDIRECT_URL কেবলমাত্র অ্যাপাচি ওয়েব সার্ভার দ্বারা সেট করা হয়েছে এবং কেবলমাত্র কিছু পরিস্থিতিতে । এটি সম্ভবত আপনার কোডের উপর নির্ভর করা উচিত নয়। আমি যতদূর বলতে পারি, সবচেয়ে ভাল সমাধানটি হবে বগি পিএইচপি কোড ঠিক করা; আপনি এটিকে সর্বদা অ্যাপাচি তে সেট করতে বাধ্য করতে পারবেন না।


প্রতিক্রিয়ার জন্য ধন্যবাদ, যদিও আমি দুর্ভাগ্যক্রমে আমার সমস্যার সাথে সম্পর্কিত সেই লিঙ্কটিতে কিছুই দেখতে পেলাম না। আমি মনে করি না যে কোনও বাহ্যিক ত্রুটিপত্রক এতে জড়িত। আমি চাই আমি বিদ্যমান কোডটি পরিবর্তন করতে পারতাম, তবে এটি এই মুহুর্তে কোনও বিকল্প নয়।
ব্যারি

মুল বক্তব্যটি হল, REDIRECT_URL কেবল ত্রুটিযুক্ত ডকুমেন্ট প্রসেসিংয়ের সময় সেট করা আছে। তার অর্থ আপনার পিএইচপি স্ক্রিপ্টগুলি মূল কনফিগারেশনে ত্রুটিযুক্ত ডকুমেন্ট হিসাবে লোড হয়েছিল এবং যে কেউ সেগুলি লিখেছিল তারা এই আচরণের উপর নির্ভর করে। এখন যেটি হচ্ছে না, স্ক্রিপ্টগুলি ভেঙে যায়।
মাইকেল হ্যাম্পটন 16

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

আমি আমার উত্তরে এটির সাথে লিঙ্ক করেছি। আপনার যদি আরও কিছু প্রয়োজন হয় তবে আপনাকে অ্যাপাচি উত্স কোডটি পড়তে হবে। যাইহোক, উত্তরটি মনে করে মনে রাখবেন যে উত্তরটি তার পাশের চেক চিহ্নের আউটলাইনটি ক্লিক করে আপনার সমস্যার সমাধান করেছে, এবং সার্ভার ফল্টটিতে আপনাকে স্বাগতম।
মাইকেল হ্যাম্পটন 16

0

পিএইচপি এর ডকুমেন্টেশন অনুযায়ী:

$ _SERVER হ'ল শিরোনাম, পাথ এবং স্ক্রিপ্টের অবস্থানের মতো তথ্য সম্বলিত একটি অ্যারে। এই অ্যারেতে থাকা এন্ট্রিগুলি ওয়েব সার্ভার দ্বারা তৈরি করা হয়। এখানে কোনও গ্যারান্টি নেই যে প্রতিটি ওয়েব সার্ভার এগুলির কোনও সরবরাহ করবে; সার্ভারগুলি কিছু বাদ দিতে পারে বা অন্যকে এখানে তালিকাভুক্ত নয় provide এটি বলেছে যে, এই ভেরিয়েবলগুলির একটি বড় সংখ্যা »সিজিআই / ১.১ স্পেসিফিকেশন হিসাবে গণ্য হয়, সুতরাং আপনার সেগুলি আশা করতে সক্ষম হওয়া উচিত।

সুতরাং এটি দেখে মনে হবে যে সমস্ত $_SERVERসুপারগ্লোবাল ভেরিয়েবলগুলি যেমনটি প্রত্যাশা করবে প্ল্যাটফর্ম-অজানাস্টিক নয়। $_SERVER['REQUEST_URI']এমন একটি মান বলে মনে হচ্ছে যা নিয়মিতভাবে সমস্ত বড় ওয়েবসার্ভার দ্বারা সংজ্ঞায়িত করা হয় যাতে আপনি পরিবর্তে এটি ব্যবহার করে দেখতে চাইতে পারেন।


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

0

আমাদের প্রকল্পগুলির একটিতে অনুপস্থিত চিত্রগুলির জন্য যা সূচি-নির্দেশিকায় পুনঃনির্দেশিত হয়েছে আমি কেবল এই ফিক্সটি ব্যবহার করেছি:

ইউআরএল: http://www.domanXY.de/image.php?file=var/binaries/store/8dfaadde-5309-4a35-8f9a-d8b9cd807aae.jpg&options=&options=resize_outer(320,150) ; শরপেন( 64) ;

<?php
//image.php (newly created)
$_SERVER['REDIRECT_URL'] = "image.php";
include "index.php";

আপনি যদি একটি বিশ্বব্যাপী সমাধান চান তবে আমার মনে হয় আপনাকে বিস্ফোরিত () ইত্যাদি ব্যবহার করতে হবে এবং given _SERVER ['REQUEST_URI'] এর মতো অন্য প্রদত্ত ভেরিয়েবল ব্যবহার করতে হবে।


-1

আপনি এই পরিবর্তনশীল সেট করে এমন পিএইচপি কোডের একটি ছোট স্নিপেট অন্তর্ভুক্ত করতে একটি পিএইচপি অটো-প্রিপেন্ড-ফাইল সেট করতে পারেন।


আমার প্রশ্নে আমি ইতিমধ্যে এটি চিহ্নিত করেছিলাম যদি এটি সম্ভব না হয় তবে আমি গ্রহণ করব। আপনি উত্তর দেওয়ার আগে আমি যে সম্পাদনা করেছি তা অনুসারে এটিও আমি শেষ করেছিলাম।
ব্যারি

দুঃখিত, আমি পোস্ট করার আগে সম্পাদনাটি দেখে মনে পড়ে না; এটি সম্পাদনা করার আগেই আমি জবাব দেওয়া শুরু করেছি, তবে পরবর্তী সময়ে সম্পাদনাটি মূল সম্পাদনার তারিখের স্ট্যাম্পটি সরিয়ে নিয়েছে বলে আমি নিশ্চিত হতে পারি না: / আমারও এটি আরও পরিষ্কার করা উচিত ছিল যে আমি যা বলছিলাম তা সম্ভবত সঠিক উপায় "ফলব্যাক" না করে আপনি যা করছেন তা অর্জন করুন। পুনরায় লেখার নিয়মগুলিতে আপনি [E: blah = blah] পতাকাগুলি ব্যবহার করতে পারেন স্বেচ্ছাসেবী পরিবেশের ভেরিয়েবলগুলি সেট করার জন্য প্রাক-অন্তর্ভুক্ত ফাইলের ভিতরে আনতে যা আপনার কোডটিতে পুনঃনির্দেশ ইঞ্জিন থেকে স্টাফগুলি পাস করার জন্য জিইটি ভেরিয়েবল ব্যবহারের চেয়ে পরিষ্কার inside
জন ক্লসকে

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