Где я могу найти, который не поддерживает Windows функций PHP?

Моей нормальной платформой разработки для PHP является Linux. Я использую Красный сервер шляпы для своего веб-сайта, моя компания использует красную шляпу и Fedora для производства, и у меня есть Ubuntu дома. Я не мог быть более счастливым. К сожалению, я теперь обязан проводить много времени, работая в PHP в Windows с помощью WAMP.

Я говорю, что это неудачно, потому что я постоянно нахожу вещи, какие поддержки Linux, которые не делает Windows. В прошлом году это на самом деле задержало проект, когда мы поняли, что WAMP использовала более раннюю версию PHP (это было зафиксировано портом 5,3 к Windows). Сегодня, я просто изучил это checkdnsrr не портирован к Windows и всему pcntl библиотека недоступна.

Так, мои вопросы это: Есть ли где-нибудь, который говорит мне текущие различия между Windows и Linux относительно PHP?

Я не ищу особенности, такие как найденные в комментариях здесь (хотя это было бы хорошо), а скорее какие функции не будут доступны в соответствии с Windows, которые доступны в соответствии с Linux.

-----------------------РЕДАКТИРОВАНИЕ-------------------------

Было два comments/statments, которые говорят этоcheckdnsrr существует в 5,3 в соответствии с Windows. Технически, это корректно. PHP не скажет, что функция не существует. Я не знаю, если это верно, со всеми установками или просто WAMP, но в то время как да, он может сказать, что работает, функция не работает, как он делает в Linux.

---------------------ОБНОВЛЕНИЕ----------------------

Не похоже, что существует хороший ответ, возможный к этому вопросу, но я нашел обходное решение благодаря одному из предложений ниже:

Поместите это в продуктивную среду. НЕ ЗАБУДЬТЕ ВЫЗЫВАТЬ НЕКОТОРУЮ ФОРМУ БЕЗОПАСНОСТИ НА ЭТОМ.

 

Тогда выполните это на dev среде. это произведет все функции, которые эксклюзивны к окружению.

$root = file_get_contents( "/available.php" );
$root = preg_replace( "/\[[0-9]{1,4}\]\s=>\s/", ( '' ), $root );
$tmp  = '"internal" => array';
$root = explode( "\n", substr( $root, strpos( $root, $tmp ) + strlen( $tmp ) + 1 ) );
array_shift( $root );
array_shift( $root );
$internal = get_defined_functions();
$internal = $internal[ "internal" ];

function trim_array( array $root )
{
    $nroot = array();
    foreach( $root as $key=>$value )
    {
          $value = trim( $value );
          if( !preg_match( "/^[a-zA-Z_]*[aeiouy]+[a-zA-Z0-9_]*$/", $value ) && 
              !preg_match( "/^[a-zA-Z_]*(md5|crc|n12|str|sqrt|ch[a-z]?r|dl|tnt|ftp|png)[a-zA-Z_]*$/", $value ) )
          {
                //echo "\n $key ";
          }
          else
          {
             $nroot[] = $value;
          }
    }

    return $nroot;
}

$root     = trim_array( $root );
$internal = trim_array( $internal );

$diff = array_values( array_diff( $root, $internal ) );
foreach( $diff as $key => $fname )
{
      if( in_array( $fname, $root ) )
      {
            echo "[$key] => $fname <= foreign server only";
      }
      else
      {
            echo "[$key] => $fname <= local";      
      }
      echo "\n";
}

11
задан cwallenpoole 29 January 2010 в 16:09
поделиться

3 ответа

Я понятия не имею, существует ли такой сайт, как вы, но вы можете использовать следующие методы, чтобы узнать об установке PHP:

Несколько трудно сказать: это доступно в Windows, и это не является общим , поскольку часто функции зависят от версии PHP, и это может так же сильно повлиять на любую ОС.

2
ответ дан 3 December 2019 в 11:36
поделиться

Во-первых, имейте в виду, что некоторые кроссплатформенные проблемы не связаны с отсутствием поддержки, но характерные характеристики, которые вы упоминаете, худшее, что приходит к моему разуму, является направлением каталогов. Или проблема не с платформой, а с сервером. Например, Apache имеет экологические переменные, которые IIS даже несмотря на то, что на уровне HTTP-уровне, а уровень TCP / IP будет нейтральным.

На этом примечание:

  • PCNTL основан на модели процесса UNIX, поэтому у него не будет поддержки Windows.
  • CheckDynsRR поддерживается для Windows по состоянию на 5,3, а пакет существовал для добавления этого расширения в Windows раньше.
  • Существует список на Php.net из . Удлинения только в Windows (com - тот, который высказывает мой разум без проверки), но я думаю, что поскольку PHP был разработан изначально для Unix (или в Наименьший POSIX) и начиная с 85% сети на Apache (я сделал это число вверх), их не так много выходов, хотя вы правы, что должно быть один.

Если бы это был я, я бы сходил с ума и сделаю скрипт, который соскочил весь список расширений и систематически проверяет страницу в Intro для «Windows», чтобы получить представление о том, какие из них являются специальными или недоступными. Но это я, я зани.

О, и вот быстрый список библиотек, которые PHP либо развивается для Windows, либо никогда не будет развиваться:

http://wiki.php.net/internals/windows/libs

3
ответ дан 3 December 2019 в 11:36
поделиться

Для каждой функции вызовите Function_Exists, например.

function check_function(function_name)
{
    function_exists(function_name) or die(function_name . " missing");
}

check_function("checkdnserr");
0
ответ дан 3 December 2019 в 11:36
поделиться