在PHP中是否有shell_exec和proc_open的替代方案?
问题描述:
看来我不能在我的共享服务器上使用shell_exec
或proc_open
。在PHP中是否有shell_exec和proc_open的替代方案?
我得到的,当我尝试使用它的消息:
警告:了shell_exec()已因安全原因被禁止在/home/georgee/public_html/admin/email.php 4号线
有没有这些功能的替代品?
答
我假设你想用这个进行异步处理,例如在单独的进程中发送eMails(因此在email.php中有错误)。如果是这样,请检查是否启用了cURL。您可以通过HTTP请求触发您的脚本,而无需等待响应。
延伸阅读:
- Asynchronous/parallel HTTP requests using PHP multi_curl
- How to use curl_multi() without blocking
- How do I make an asynchronous GET request in PHP?
如果卷曲不可用,请尝试使用非阻塞流使用方法:
- http://de.php.net/manual/en/function.stream-set-blocking.php
- http://thethoughtlab.blogspot.com/2007/04/non-blocking-io-with-php-mio.html
为了增加安全性,可以考虑使用自定义的API密钥,所以电子邮件发送URL不能擅自触发。将它作为GET或POST传递。您也可以验证请求是否来自同一台服务器。
答
唯一的选择是不使用共享主机。他们不希望你这样做是有原因的。
答
只需跟进需要使用共享主机的人员。虽然我不再推荐HostGator由于他们的低于标准支持(由EIG购买产生),但他们做允许popen
。
我需要该函数来运行另一个脚本,比如'php someotherfile.php'。 – 2010-04-17 05:49:29
include someotherfile.php – 2010-04-17 06:03:58
*(旁注)*检查'disable_classes'和'disable_functions'的ini设置中'phpinfo()'的输出以查看不可用的内容。 – Gordon 2010-04-17 11:12:43