كيفية التحقق مع PHP إذا كان يتم تشغيل البرنامج النصي من طلب وحدة التحكم أو المتصفح؟
-
22-07-2019 - |
سؤال
وحاولت أشياء مثل $ _ENV [ 'CLIENTNAME'] == 'وحدة التحكم "ولكن يبدو أن العمل على معينة فقط في نظام التشغيل (عملت في ويندوز، وليس لينكس).
وحاولت! فارغة ($ _ ENV [ 'SHELL']) ولكن هذا لا يعمل دائما إما ...
هل هناك طريقة للتأكد من هذه التي ستعمل في جميع نظم التشغيل / البيئات؟
المحلول
وإرجاع سلسلة الصغيرة التي يصف نوع واجهة (لل API الخادم، SAPI) التي تستخدم PHP. على سبيل المثال، في CLI PHP هذه السلسلة سيكون "المبادرة القطرية" في حين أنه مع اباتشي قد يكون لديك عدة قيم مختلفة اعتمادا على SAPI المحدد المستخدمة.
اقتباس فقرة>وعلى سبيل المثال:
$isCLI = ( php_sapi_name() == 'cli' );
ويمكنك أيضا استخدام PHP_SAPI
ثابت
نصائح أخرى
http://php.net/manual/en/features. commandline.php # 105568 "PHP_SAPI" ثابت
<?php
if (PHP_SAPI === 'cli')
{
// ...
}
?>
وأعرف أن هذا هو السؤال القديم، ولكن للسجل، وأرى HTTP يطلب القادمة دون رأس عامل المستخدم وPHP لا يعرف HTTP_USER_AGENT تلقائيا في هذه القضية.
if ($argc > 0) {
// Command line was used
} else {
// Browser was used
}
و$ ARGC coounts كمية من الحجج التي تم تمريرها إلى سطر الأوامر. ببساطة عن طريق استخدام فب page.php، و$ ARGC يعود 1
ودعوة page.php مع المتصفح، وسوف $ ARGC عودة NULL
وحل واحد هو للتحقق ما إذا تم تعريف STDIN:
if (!defined("STDIN")) {
die("Please run me from the console - not from a web-browser!");
}
وتحقق من HTTP_USER_AGENT، ينبغي أن توجد في طلب HTTP