Почему некоторые установки PHP имеют $ _SERVER ['SCRIPT_URI'], а другие нет? - PullRequest
4 голосов
/ 06 декабря 2011

Я использую два сервера Apache 2.Один имеет PHP5.2, а другой - PHP5.3.Есть ли причина, по которой на машине 5.3 есть $_SERVER['SCRIPT_URI']?

Откуда эта переменная?Это явно то, что исходит из среды Apache, и это не описано в руководстве по PHP.Тем не менее, это удобный ярлык для комбинации ['HTTPS'], ['SERVER_NAME'] и ['REQUEST_URI'].

. Я попытался просмотреть файлы конфигурации, выполнить поиск в SO и в Интернете.

Ответы [ 3 ]

8 голосов
/ 06 декабря 2011

Согласно сообщению на WebHostingTalk это происходит от mod_rewrite:

Добавить

RewriteEngine On

К виртуальному хосту вфайл httpd.conf, для которого вы хотите включить его, а затем перезапустите apache.

3 голосов
/ 14 марта 2015

Я перешел на CentOS 7 с Plesk12, PHP 5.6.6, переписал и т. Д. SCRIPT_URI там не было.И поскольку в некоторых ситуациях его так приятно использовать, я написал этот обходной путь:

if(!isset($_SERVER['SCRIPT_URI'])){
    $_SERVER['SCRIPT_URI'] = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

    $pos = strrpos($_SERVER['SCRIPT_URI'],'/');
    if($pos!==false) {
        $_SERVER['SCRIPT_URI'] = substr($_SERVER['SCRIPT_URI'], 0, $pos+1);
    }
}

Поскольку я не являюсь полным экспертом, просмотрите этот код в своем конкретном приложении, прежде чем подключать его. В моей системе онКажется, работает отлично.Я просто поместил его в область заголовка моего index.php и других.

0 голосов
/ 06 декабря 2011

Насколько я знаю, $_SERVER['SCRIPT_URI'] доступен только если вы используете PHP как CGI. Я полагаю, что в ваших двух установках PHP должна быть разница

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...