我正在與運行在Hostgator共享主機上的PHP CLI(可能)的簡單問題鬥爭。一個簡單的代碼:
<?php
var_dump($argv);
var_dump($GLOBALS["argv"]);
var_dump($_SERVER["argv"]);
var_dump(ini_get("register_argv_argv"));
?>
我的本地機器上運行的時候,以及PHP的其他幾個實例爲:所預測的正確
php test.php arg1
輸出:
array (
0 => 'test.php',
1 => 'arg1'
)
array (
0 => 'test.php',
1 => 'arg1'
)
array (
0 => 'test.php',
1 => 'arg1'
)
1
但是從cron運行在Hostgator共享主機上輸出:
array (
)
NULL
array (
0 => 'test.php',
1 => 'arg1'
)
1
我與之戰鬥的代碼是遺留代碼,它非常依賴$ GLOBALS [「argv」]來解析命令行參數。我沒有辦法修改整個代碼庫來代替$ _SERVER [「argv」]。
什麼可能是爲什麼我所有的PHP實例用命令行參數填充所有數組,並且Hostgator上託管的php不會填充$ GLOBALS [「argv」]?
我做了一個解決辦法來處理這個問題,但我討厭當我不知道爲什麼有事情發生:)
感謝您的想法!
只有當register_globals打開時,它才被定義爲全局'$ argv'。 – mario
是不是$ _GLOBALS而不是$ GLOBALS? – Rolice
@Roice - 不,它不是。 (它應該,但它不是 - 你不只是希望PHP可以一致嗎?) – SDC