簡體   English   中英

shell_exec()和exec()在PHP中不起作用

[英]shell_exec() and exec() not working in PHP

像許多其他應用一樣,我在PHP中的shell_exec()函數也遇到了問題。 我禁用了安全模式,並從php.ini中刪除了disable_functions。

如果我從終端(php print.php)運行php腳本,則運行良好,但如果從Web瀏覽器運行,則不會發生任何事情。

這是秘訣:

<?php

$output = shell_exec('lp print.php');
echo "<pre>$output</pre>";

?>

請幫我。 我在Apache2上運行PHP 5.3.10。 我的操作系統是Ubuntu Server 12.4。 這是phpinfo頁面: http : //testni-server.info/info.php

編程語言PHP允許通過配置指令safe_mode_exec_dir限制外部命令的執行。 該指令應包含指向目錄的完整路徑,該目錄包含可以運行PHP腳本的程序。 如果腳本嘗試執行不在此目錄中的命令,則不會執行該命令。 僅當啟用安全模式時,此配置偽指令才處於活動狀態,這意味着對用戶的限制有時甚至是不必要的限制。 PHP沒有已知的可能性以禁用安全模式來限制外部命令的執行。 因此,這是一個補丁,將特殊指令exec_dir直接添加到PHP中。 該指令與safe_mode_exec_dir非常相似,但是不必啟用安全模式。

此修補程序限制或糾正了這些功能的行為:

exec()
passthru()
proc_open()
shell_exec()
system()
popen()
is_executable() 

創建該補丁是為了限制用戶在多域apache服務器上執行外部命令,首先是針對PHP 4.2.1版。 該修補程序已發送給PHP開發人員,因此它可能是PHP的一部分,但沒有一個PHP開發人員對此感興趣。另一方面,一些PHP用戶想要此修補程序,因此創建了此站點。

您的命令行(CLI)PHP使用的工作目錄和/或路徑可能與CGI不同。 在調用shell_exec()之前,嘗試使用chdir()顯式定義工作目錄(包含lp命令shell_exec()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM