2009-08-30 4 views
0

Wie können Sie das folgende Skript beim Generieren von Dokumenten von PHPdoc ausführen?Ausführen von SH-Skript mit sudo für PHPdoc

# 1 sudo -Code

sudo source makedoc.sh 

I

bekommen
no command source 

# 2 ohne sudo

Das Problem ist, dass sudo nicht den Befehl source hat. Ich habe versucht, das Problem ohne Erfolg zu beheben, indem die persmissions von ~/phpdoc/phpdoc auf 777 zu ändern und dann

source makedoc.sh 

läuft ich

makedoc.sh:90: permission denied: /home/masi/phpdoc/phpdoc 

# 3 ohne sudo

Ich betreibe

phpdoc -c makedoc.sh 

Ich bekomme

codes master $ phpdoc -c makedoc.sh 
PHP Version 5.2.6-3ubuntu4.2 
phpDocumentor version 1.4.2 

Parsing configuration file phpDocumentor.ini... 
    (found in /usr/share/php/data/PhpDocumentor/)... 

done 
Maximum memory usage set at 256M after considering php.ini... 
using tokenizer Parser 
a target directory must be specified 
try phpdoc -h 
+0

Vielen Dank für Ihre Antworten! –

Antwort

2

Hat die Datei makedoc.sh eine Shebang-Zeile (zB! #/Usr/bin/bash), damit sie ausführbar gemacht werden kann?

chmod +x makedoc.sh 

Dann

sudo ./makedoc.sh

und sehen, was passiert.

Die ./ makedoc.sh im aktuellen Verzeichnis laufen bedeutet (es sollte die Datei nicht gefunden Fehler beheben)

Geben Berechtigungen von 777 jemand, schreiben oder ausführen, um die Dateien lesen können. Dies ist das Sicherheitsrisiko, auf das Mike Arthur hingewiesen hat. Es könnte ein potenzielles Risiko sein, aber es ist nie eine gute Übung, anderen das Ändern, Löschen oder Ausführen von Dateien zu erleichtern.

+0

Es hat den Shebang #!/Bin/bash –

1

sudo source macht sehr wenig Sinn, Sie machen eine neue Shell als root-Benutzer und versuchen dann, die Umgebung zu ändern, die dann mit der root-Shell zerstört wird.

Quelle wird auch nur verwendet, wenn Sie Ihre Umgebung in der aktuellen Shell verändern wollen, was ich ziemlich sicher nicht mit etwas tun möchte, das "makedoc.sh" genannt wird.

Sie wollen wahrscheinlich nur laufen:

sudo makedoc.sh 

Auch nie Dinge auf 777 gesetzt, es ist nie die Lösung für das Problem, und es ist ein Sicherheitsrisiko.

+1

Ich bekomme 'sudo: makedoc.sh: Befehl nicht gefunden' nachdem ich den letzten Befehl ausgeführt habe. --- Angenommen, der Ordner enthält nur Müll mit den Berechtigungen 777. ** Wie kann dies ein Sicherheitsrisiko sein? ** –

+1

Dann müssen Sie direkt auf das Skript makedoc.sh zeigen, wo immer es ist. Ich schaute auf Ihre Quelle und Sie müssen nicht "Quelle" ausführen, nur Sudo. 777 ist ein Sicherheitsrisiko, weil es bedeutet, dass jeder Benutzer in dieses Verzeichnis schreiben kann, und wenn es nicht seine eigene Partition (wie/tmp sollte sein), können sie Ihr Laufwerk füllen. –

0

Die ein grund für makedocs.Die Existenz von sh soll ein praktisches Shell-Skript sein, damit Sie verwenden können, wenn Sie immer die gleichen Laufzeiteinstellungen wiederverwenden wollen. Es ist nichtder Weg phpDocumentor im Allgemeinen zu laufen.

Wenn Sie versuchen, phpDocumentor einfach gegen Ihren eigenen Code auszuführen, um Dokumente dafür zu erstellen, müssen Sie makedocs.sh bearbeiten, um alle Laufzeitargumente genau so zu setzen, wie Sie sie haben wollen. Insbesondere das Argument -t zur Angabe des Ziels Ziel wo die Dokumente geschrieben werden sollen.

Wirklich, es sollte keine Notwendigkeit geben, sudo zu verwenden, um phpdoc auszuführen, es sei denn, Sie versuchen, die generierte Dokumentation direkt in den Speicherort "doc_dir" der systemweiten PEAR-Installation zu schreiben. In diesem Fall wäre sudo notwendig, da root PEAR besitzt. Vielleicht brauchen Ihre Bedürfnisse nicht erfordern Ihre Dokumente zu diesem Ort geschrieben werden?