2014-11-24 61 views
1

感謝您的幫助提前。我一直在研究這個錯誤超過12個小時。在Heroku上調用未定義函數mysql_connect()。 (PHP在本地工作正常,但不在heroku上,爲什麼?)

在我的Heroku站點中有一個AJAX註冊表單,它在MySQL上運行並連接到ClearDB數據庫。我可以成功地將數據發送到本地服務器(MAMP)上的數據庫。但是,我無法在服務器上做同樣的事情。

請求無法發送到數據庫並在加載時卡住。經過檢查,我意識到這是一個PHP 500錯誤。

我發現了Heroku日誌中的關鍵問題。 2014-11-24T15:02:31.238493 + 00:00 app [web.1]:[24-Nov-2014 15:02:30 UTC] PHP致命錯誤:調用/ app/index中的未定義函數mysql_connect()。 php 5行

index.php的第5行是mysql_connect('hostname','username,'password');

我試過運行php_getinfo();並發現服務器中沒有MySQL支持。在附註中,我在本地主機中支持MySQL。

服務器的php.ini路徑是這樣的:配置文件(php.ini)路徑/app/.heroku/php/etc/php &加載配置文件/ app/vendor/heroku/heroku-buildpack-php/conf/php/php.ini

我該怎麼辦?

+0

請,或不使用'mysql_ *'功能(http://stackoverflow.com/questions/12859942/why-shouldnt -i-use-mysql-functions-in-php),它們不再被維護,並且[已正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。學習[準備的語句](http://en.wikipedia.org/wiki/Prepared_statement),並使用[PDO](http://us1.php.net/pdo)或[MySQLi](http:// us1.php.net/mysqli)。你也會想[防止SQL注入!](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)。 ***他們有可能更新了MySQL。*** – 2014-11-24 15:17:14

+1

看起來這些功能在他們的安裝中是不可用的(並且有一個很好的理由),請遵循Jay Blanchard的建議並切換到PDO/MySQLi。 – Crackertastic 2014-11-24 15:19:06

+0

如果您的服務器上沒有* MySQL *支持,您需要詢問或添加它。 – 2014-11-24 15:21:38

回答

0

mysql_ *函數已被棄用,並在下一個PHP版本中被刪除。檢出mysqli

0

值得注意的是,您可以通過composer.json在Heroku上啓用mysql_*。這在Heroku's devcenter docs on PHP support中有記錄。

還建議您考慮使用一個更現代的MySQL庫,雖然:)

+0

如何通過composer.json在Heroku上啓用mysql_ *,我是一個新手Heroku謝謝。 – 2018-02-05 10:46:34

相關問題