2013-02-22 62 views
0

我在我的PHP腳本中有一個簡單的shell_exec()腳本。在上傳時,此線運行:shell_exec一個php文件與MySQL裏面不工作

shell_exec("php process.php > /dev/null &"); 

這絕對順利地執行文件中的背景,目的,但它似乎已經連接到MySQL在process.php

process.php包括麻煩:

$db_host="localhost"; 
$db_name="databasename"; 
$dbusername="root"; 
$dbpassword="pass"; 

mysql_connect($db_host,$dbusername,$dbpassword); 
mysql_select_db($db_name); 
//then a mysql_query() 

看來mysql_connect()失敗。如果我將所有這些複製並粘貼到第一個文件中,而不是我的shell_exec(),它可以正常工作。

當運行shell_exec()時,mysql主機是否存在'localhost'的內容?我在XAMPP Mac上測試BTW

+0

嘗試用'127.0.0.1' ... – 2013-02-22 13:51:42

+1

你怎麼知道它失敗?它是否提供錯誤信息(請將其添加到您的問題中) – Ikke 2013-02-22 13:51:50

+1

嘗試將腳本的輸出傳輸到常規文件而不是'/ dev/null'並查找錯誤消息。 – helmbert 2013-02-22 13:52:13

回答

0
  • 使用完整路徑PHP二進制/usr/local/bin/php而不是php
  • 確保process.php文件是可執行
  • 你可以使用IP的,而不是主機名(即:127.0。 0.1而不是localhost)稍微加快了速度。
  • 刪除/ dev/null部分,以便您可以看到錯誤和警告。
+0

使用ip而不是名字的速度是最小的(特別是像localhost這樣的東西,因爲它不必打網絡)。 – Ikke 2013-02-22 13:58:33

+0

使用127.0.0.1工作。謝謝!爲什麼會這樣?當我上傳到我的實時主機服務器時,我會設置什麼?!? – user32571 2013-02-22 13:59:51

+0

@Ikke我同意你的看法,但是在某些LAMP棧上連接到mysql不能使用'localhost'。 – 2013-02-22 14:02:15