我試圖運行一個背景PHP過程與shell_exec()
作爲WordPress插件的一部分。背景PHP過程與shell_exec()作爲WordPress插件的一部分
這是樣本。
/* Plugin Name: Sample Background Process */
add_action('init', 'Sample_Background_Process');
function Sample_Background_Process() {
$file = __DIR__ . '/log.html';
$current = date('l jS \of F Y h:i:s A') . ': accessed<br />';
file_put_contents($file, $current, FILE_APPEND);
}
它創建一個日誌中的插件文件夾,每當一個頁面獲取訪問其追加一些文本。
然後,我添加了這一行,shell_exec('php "' . ABSPATH . '/index.php" > /dev/null 2>/dev/null &');
。所以後臺進程應該訪問該頁面並運行將文本附加到日誌文件的功能。但它似乎並沒有這樣做。我期望一個頁面加載在日誌文件中產生兩行。但它只會添加一行,這意味着後臺進程不會運行,或者WordPress不會執行任何操作,如果這樣調用。
add_action('init', 'Sample_Background_Process');
function Sample_Background_Process() {
$file = __DIR__ . '/log.html';
$current = date('l jS \of F Y h:i:s A') . ': accessed<br />';
file_put_contents($file, $current, FILE_APPEND);
shell_exec('php "' . ABSPATH . '/index.php" > /dev/null 2>/dev/null &');
}
我在做什麼錯?
路徑php
在shell_exec()
由於我在Windows服務器上測試而在我的實際腳本中被路徑改爲php.exe。它在其他PHP腳本中運行良好。
謝謝。
你肯定安全模式是Windows服務器上禁用? –
'if(ini_get('safe_mode'))'返回false。 – Teno
嘗試打開錯誤報告並自行運行該單一行。這應該讓你知道發生了什麼。您可能還想打印出您傳遞給'shell_exec'的字符串並手動執行它。 –