2014-04-21 16 views
1

我正在構建一個Web應用程序內的小型電子郵件客戶端。在做了一些研究之後,我試圖使用imap函數。我得到一個錯誤,說我正在調用一個未定義的函數,所以我再次研究並取消註釋extension=php_imap.dll將新安裝的PHP模塊加載到Apache中

然後我發現我不得不更新PHP的imap功能,我這樣做。現在,imap功能在終端中的php交互中起作用,但我無法在瀏覽器中使用它。我假設我不得不以某種方式將它加載到Apache Config文件中,但我似乎無法找到如何去做。

任何想法?

回答

0

您需要重新啓動Apache才能使用新配置重新加載PHP模塊。命令行PHP每次都使用最新配置啓動一個新的PHP實例,而在Apache中運行的PHP擴展是單獨的,並且只在Apache本身重新啓動時加載新的配置設置。

假設您基於.dll擴展名在Windows上運行,那麼apachectl restartapache2ctl restart可能會工作,或者您使用的安裝程序可能有托盤應用程序或其他GUI工具,可以爲您執行此操作。

如果在Linux sudo service apache2 restartsudo service httpd restart上運行,則取決於分配。

+0

我應該提到我正在運行OSX Mavericks,但'sudo apachectl resart'是我嘗試做的第一件事。這沒有做什麼。你也可能會發現有趣的是,在安裝之前,我能夠運行'sudo php restart',但之後它給了我一個錯誤'無法打開輸入文件:重啓'。 因爲它沒有做任何事情,當我重新啓動Apache,我認爲Apache可能會從錯誤的地方拉動PHP。我在哪裏可以找到正確的PHP模塊?我是否需要安裝一個新模塊來處理新安裝的PHP? – Palmer

+0

取消註釋「extension = php_imap.dll」只適用於Windows。無論你如何「使用imap函數更新php」,都改變了CLI進程使用的php.ini,而不是Apache。使用phpinfo()來查找每個PHP.ini的位置並比較這兩個文件。一旦差異得到解決,再次重新啓動Apache。 PHP不是一種服務,你不能「sudo php restart」,所有這些都是以root身份運行PHP解釋器並要求它處理一個名爲「restart」的文件。 –

+0

可能存在什麼差異?我沒有用於Apache文件的php.ini,所以我只是簡單地將用PHP交互加載的文件複製到/etc/php.ini(這是Apache使用的那個),無論如何我都需要它。這也沒有奏效。 – Palmer