Nền tảng phát triển bình thường của tôi cho PHP là Linux. Tôi sử dụng máy chủ mũ đỏ cho trang web của mình, công ty của tôi sử dụng mũ đỏ và Fedora để sản xuất và tôi có Ubuntu ở nhà. Tôi không thể hạnh phúc hơn. Thật không may, bây giờ tôi cần phải dành nhiều thời gian làm việc trong PHP trong Windows bằng cách sử dụng WAMP.Tôi có thể tìm thấy những chức năng PHP nào Windows không hỗ trợ?
Tôi nói điều này thật không may vì tôi liên tục tìm kiếm những thứ mà Linux hỗ trợ mà Windows không hỗ trợ. Năm ngoái, nó thực sự trì hoãn một dự án khi chúng tôi nhận ra rằng WAMP đã sử dụng một phiên bản PHP cũ hơn (điều này đã được cố định bởi cổng 5.3 đến Windows). Hôm nay, tôi chỉ biết rằng checkdnsrr
không được chuyển sang Windows và toàn bộ thư viện pcntl
không khả dụng.
Vì vậy, câu hỏi của tôi là: Có bất kỳ nơi nào cho tôi biết sự khác biệt hiện tại giữa Windows và Linux liên quan đến PHP không?
Tôi không tìm kiếm idiosyncrasies, như được tìm thấy trong các ý kiến here (mặc dù những người sẽ được tốt đẹp), nhưng thay vào đó chức năng sẽ không có sẵn trong Windows có sẵn trong Linux.
----------------------- EDIT ---------------------- ---
Đã có hai nhận xét/số liệu cho biết rằng checkdnsrr
tồn tại trong 5.3 dưới Windows. Về mặt kỹ thuật, điều này là chính xác. PHP sẽ không nói rằng hàm không tồn tại. Tôi không biết nếu đây là trường hợp với tất cả các cài đặt hoặc chỉ WAMP, nhưng trong khi có, nó có thể nói rằng nó hoạt động, chức năng không hoạt động như trong Linux.
--------------------- CẬP NHẬT ----------------------
Có vẻ như không có câu trả lời hay cho câu hỏi này, nhưng tôi đã tìm thấy giải pháp thay thế nhờ một trong các đề xuất bên dưới:
Đặt điều này vào môi trường sản xuất. HÃY NHỚ LẠI MỘT SỐ MẪU BẢO MẬT VỀ NÀY.
<?php print_r(get_defined_functions()); ?>
Sau đó chạy trên môi trường dev. nó sẽ xuất tất cả các hàm độc quyền cho môi trường cục bộ.
$root = file_get_contents("<path to server>/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";
}
(* sidenote *) 'checkdnsrr' có sẵn trên Windows như của PHP5.3 – Gordon